ディレクトリに一連のファイルがあります。特定の日付のセットのファイルを検索する必要があります (たとえば、1 月 16 日から 1 月 20 日までのファイルが必要な場合)。使用してみls -ltr | grep <date>
ましたが、ファイルの選択を完了するには手順が多すぎます。これを行う簡単な方法はありますか。ありがとう!
質問する
56122 次
3 に答える
21
ディレクトリにいくつのファイルがあるかわかりませんが、次のようなものは驚くほど高速です。
ls -al | awk '$6 == "Jan" && $7 >= 16 && $7 <= 20 {print $9}'
私のシステムでは、日付がわずかに変更された次のように表示されます。
pax> ls -al | awk '$6 == "Jan" && $7 >= 16 && $7 <= 29 {print $9}'
kids_shares.ods
our_savings.gnumeric
photos
pax> ls -ald kids_shares.ods our_savings.gnumeric photos
-rw-r--r-- 1 pax pax 51005 Jan 29 19:39 kids_shares.ods
-rw-r--r-- 1 pax pax 2275 Jan 28 14:48 our_savings.gnumeric
drwxrwxrwx 130 pax pax 4096 Jan 29 21:47 photos
指定されたファイルの日付が一致していることがわかります。
注意すべきことの 1 つは、ファイルが最近のものである場合、列 8 に時間があります。ある程度の年齢を超えるとls
、そこに年を入れ始めます。半年前の境界あたりのどこかだったという漠然とした記憶がありますが、完全にはわかりません. それにも対応する必要があります。
于 2013-02-05T08:29:53.257 に答える
11
代わりに使用find(1)
すると、はるかに簡単になります。
find . -mtime -$start -mtime +$end
于 2013-02-05T08:25:41.437 に答える
8
を使ったほうがいいですfind
。検索する特定の時刻を持つ 2 つの一時ファイルを作成することから始めます。touch
これを行うことができます:
touch -t "201301160001" ./start
touch -t "201301202359" ./finish
次に実行しますfind
:
find /path/to/files -type f -newer ./start ! -newer ./finish
于 2013-02-05T08:36:37.913 に答える