需要一个shell脚本来删除除* .pdf之外的所有文件

时间:2011-01-15 22:46:32

标签: bash shell sh delete-file

任何人都可以编写一个shell脚本来删除文件夹中除pdf个扩展名之外的所有文件吗?

4 个答案:

答案 0 :(得分:14)

这将包括所有子目录:

find . -type f ! -iname '*.pdf' -delete

这只会在当前目录中起作用:

find . -maxdepth 1 -type f ! -iname '*.pdf' -delete

答案 1 :(得分:6)

$ ls -1 | grep -v '.pdf$' | xargs -I {} rm -i {}

或者,如果您有信心:

$ ls -1 | grep -v '.pdf$' | xargs -I {} rm {}

或者,防弹版本:

$ find . -maxdepth 1 -type f ! -iname '*.pdf' -delete

答案 2 :(得分:5)

这应该可以解决问题:

shopt -s extglob
rm !(*.pdf)

答案 3 :(得分:-1)

ls | grep -v '.pdf$' | xargs rm

这将过滤所有不以PDF结尾的文件,并对其执行RM