如何根據文件日期壓縮文件

如何根據文件日期壓縮文件

我的目錄中至少有 30 個文件,其中包含過去 7 天的舊日期。現在我需要根據檔案建立/修改日期來壓縮它們。

例如,
4 月 7 日的 10 個檔案 -- 建立 april7.zip 的 zip
4 月 8 日的 10 個檔案 -- 建立 april8.zip 的 zip
4 月 9 日的 10 個檔案 -- 建立 april9.zip 的 zip

答案1

通常find -mtime在這裡使用起來有點困難,因為它只測試相對於當前時間點的年齡。

使用 GNU date 和 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[@]}"

因此,這次只能處理一個給定日期。

相關內容