[英]Script for deleting multiple directories based on directory name using shell or bash script
我正在嘗試編寫一個Shell腳本,該腳本根據目錄名稱而不是上次修改時間刪除目錄及其內容。
我在/tmp/
位置有以下目錄
2015-05-25
2015-05-26
2015-05-27
2015-05-28
2015-05-29
2015-05-30
2015-05-31
現在,我想刪除所有目錄,直到2015-05-29
為止。 所有目錄的上次修改日期都相同。
有人可以建議嗎?
一種簡單但不靈活的方式(以bash方式)是:
rm -rf 2015-05-{25..29}
一種更靈活的方法將涉及一些編碼:
ls -d ./2015-* | sort | sed '/2015-06-02/,$d' | xargs rm -r
一個簡單的解決方案是:
rm -r /tmp/2015-05-2?
如果要保留2個文件夾,請嘗試:
ls -d ./2015-* | sort | head -n -2 | xargs echo
將-2
替換為要保留的負數文件夾。 當輸出看起來正確時,用rm -r
替換echo
。
該問題的目的是查找名稱指示時間戳的目錄。 因此,我建議計算這些時間戳,以決定是否刪除:
ref=$(date --date 2015-05-29 +%s)
for d in ????-??-??; do [[ $(date --date "$d" +%s) -le $ref ]] && rm -rf "$d"; done
ref
是參考日期,其他目錄的名稱與此進行比較。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.