ファイルの日付に基づいてファイルを圧縮する方法

ファイルの日付に基づいてファイルを圧縮する方法

私のディレクトリには、過去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つだけ処理できます。

おすすめ記事