我在一个文件夹中有很多不同类型的文件。我需要删除文件,但pdf文件除外。 我试图只显示pdf文件。但我需要删除除pdf文件以外的其他文件
ls -1 | xargs file | grep 'PDF document,' | sed 's/:.*//'
答案 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”来限制当前目录。