2017-06-15 46 views
2

我正在尋找從擴展名目錄中刪除文件的最佳方法。 我打算按日期去做。但現在,我正在測試它的工作原理。 此:通過擴展名刪除文件的最佳方式是什麼?

dir=/tmp/backup/ 

mask="jpeg jpg png gif bmp pdf" 

for i in $mask; do 
find $dir -name "*.$i" -type f -delete 
done 

或那樣嗎?

find $dir \(-name "*.jpeg" -o -name "*.jpg" -o -name "*.png" \ 
       -o -name "*.gif" -o -name "*.bmp" -o -name "*.pdf" \) -type f -delete 

我婉與機器和操作系統的五礦資源去做。也許你知道其他方式來做到這一點。因爲我將刪除一年前的文件。它可以調用滯後。謝謝。

回答

4

你可以使用:

# to ensure it doesn't return *.jpg if there is no .jpg file 
shopt -s nullglob 

# list all matching extension filea 
echo *.{jpeg,jpg,png,gif,bmp,pdf} 

當您滿意的輸出,只是rm


但是更換echo,如果你想使用一個變量然後存儲所有擴展

mask="jpeg jpg png gif bmp pdf" 

find . -type f -regextype posix-extended -regex ".*\.("${mask// /|}")" 
:在一個變量中,然後用 find命令使用這樣
相關問題