私のディレクトリには、過去7日間の古い日付を含む30以上のファイルがあります。これで、作成/変更日に基づいてファイルを圧縮する必要があります。
たとえば、
4月7日のファイル10個 - april7.zipのzipの作成
4月8日のファイル10個 - april8.zipのzipの作成
4月9日の10個のファイル - april9.zipのzip作成
ベストアンサー1
通常find -mtime
、現在の時点で年齢をテストするため、ここでは使用するのが少し難しいです。
GNU日付とBashを使用すると、同様の操作を実行して、ファイルの日付に対応するアーカイブに各ファイルを追加できます。
for f in * ; do
zip $(date -r "$f" +%F).zip "$f" # 2017-04-07.zip
done
または:
for f in * ; do
d=$(date -r "$f" +%B%d)
zip ${d,,}.zip "$f" # april07.zip
done # ${var,,} is for lowercase
(date
修正時間のみ読み取ることができます。出力形式を変更するには、より多くの操作をctime
使用して実行する必要があるためです。)stat
何らかの理由で処理する前に、特定の日付のすべてのファイルのリストをインポートする必要がある場合は、そのファイルを配列として収集できます。
files=()
date="2017-04-07"
for f in * ; do
[ "$(date -r "$f" +%F)" = "$date" ] && files+=("$f")
done
# do something with "${files[@]}', e.g.
# zip $date.zip "${files[@]}"
したがって、現時点では指定された日付を1つだけ処理できます。