删除特定扩展文件格式以外的文件

时间:2011-05-17 05:44:53

标签: linux bash shell

我在一个文件夹中有很多不同类型的文件。我需要删除文件,但pdf文件除外。 我试图只显示pdf文件。但我需要删除除pdf文件以外的其他文件

ls -1 | xargs file | grep 'PDF document,' | sed 's/:.*//'

5 个答案:

答案 0 :(得分:2)

您可以执行以下操作 - 我使用echo rm代替rm来确保安全:

for i in *
do
    [ x"$(file --mime-type -b "$i")" != xapplication/pdf ] && echo rm "$i"
done

文件的--mime-type -b选项使文件的输出更容易在脚本中处理。

答案 1 :(得分:2)

$ ls aa.txt a.pdf bb.cpp b.pdf

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

$ ls a.pdf b.pdf

:)!

答案 2 :(得分:1)

ls |xargs file|awk -F":" '!($2~/PDF document/){print $1}'|xargs rm -rf

答案 3 :(得分:0)

尝试反转grep匹配:

ls -1 | xargs file | grep -v 'PDF document,' | sed 's/:.*//'

答案 4 :(得分:0)

根据我的经验,遇到没有.pdf扩展名的PDF文件是很少见的。您没有说明为什么示例中需要“文件”,但我将其写为:

# find . -not -name '*.pdf' -delete

请注意,这将递归到子目录中;使用“-maxdepth 1”来限制当前目录。