2013-07-25 119 views
0

我想知道是否可以刪除目錄中的每個文件,但具有特定擴展名的文件?刪除一切,但具有指定擴展名的文件

所以,這樣的事情會刪除所有,但PNG文件:

find "$target" ! -name "*.png" -printf '%f\n' -delete; 

但我會有關的文件夾中刪除一切,除* .PNG和,可以說,* .txt文件?

謝謝

+0

的可能重複[需要一個刪除除所有文件shell腳本\ *。 .pdf](http://stackoverflow.com/questions/4702577/need-a-shell-script-that-deletes-all-files-except-pdf) –

回答

2

find讓您使用-o布爾or

find "$target" ! \(-name "*.png" -o -name "*.txt" \) -printf '%f\n' -delete; 
+0

謝謝親切先生,作品像一個魅力:) – user1039063

0

你可以考慮做這樣的事情,刪除$目標下的每個文件,該文件是不是PNG文件:

find $target -name '*' | grep -v '\.(png|txt)$' | xargs rm 
2

要查找僅pdf和txt文件(要刪除,請用rm替換printf)

printf "%s\n" *.{pdf,txt} 

要查找所有,但PDF和TXT文件

shopt -s extglob nullglob 
printf "%s\n" !(*.pdf|*.txt) 

如果你想訪問子目錄

shopt -s extglob nullglob globstar 
printf "%s\n" **/!(*.pdf|*.txt) 
+0

謝謝你先生,你的方法工作得很好,但我接受了其他人的迴應,因爲使用了find命令。 – user1039063

相關問題