特定の日付のタイムスタンプのファイルを探す

シェルスクリプト総合 その5より

355 名前: 名無しさん@お腹いっぱい。 2006/02/26(日) 18:55:50

「今日から何日前」じゃなくて、
特定の日付のタイムスタンプのファイルを探すシェルはどう書けばいいですか?
368 名前: 名無しさん@お腹いっぱい。 2006/02/26(日) 21:39:43

>>355

↓ほれ。こんなんでどう?

arg=2005-01-23 # 探したい日付

days=`expr \( \`date +%s\` - \`date +%s -d $arg\` \) / 60 / 60 / 24`
find . -daystart -mtime $days


↑ ` ` が2重にネスティングしてるので注意してね。

GNU date なしでやることはできないのだろうか?
シェルスクリプト総合スレまとめ wiki があればいいのに。

[追記:2006-11-18]
GNU find 版、zsh + stat 版。
http://d.hatena.ne.jp/lurker/20061118/1163809700


GNU stat を使うべく coreutils を入れたら、/usr/bin/gstat という別のコマンドがあった。
stat も POSIX 準拠じゃないし、実際全然違うので注意です。stat(2) は POSIX.1 準拠らしい。
やはり C で書くしか。
[追記2:2006-11-18]
一時ディレクトリを作るのが美しくないが、touch -t も find -newer も POSIX 準拠なのでポータブル?

mkdir x y;touch -t 200611102359.59 x;touch -t 200611112359.59 y;find . -type f -newer x \! -newer y;rmdir x y