簡體   English   中英

使用shell或bash腳本基於目錄名稱刪除多個目錄的腳本

[英]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
  1. 按詞法排序所有目錄都遵循名稱模式2015- *
  2. 2015-06-02之后(含)使用“ sed”刪除所有文件
  3. 使用'xargs'刪除其余的

一個簡單的解決方案是:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM