我想知道我是否可以删除目录中的每个文件,但是那些具有特定扩展名的文件?
所以,类似的东西会删除所有png文件:
find "$target" ! -name "*.png" -printf '%f\n' -delete;
但是我该如何删除文件夹中的所有内容,而不是* .png和* .txt文件?
谢谢
答案 0 :(得分:2)
find
允许您将-o
用于布尔值or
:
find "$target" ! \( -name "*.png" -o -name "*.txt" \) -printf '%f\n' -delete;
答案 1 :(得分:2)
仅查找pdf和txt文件(删除,用rm替换printf)
printf "%s\n" *.{pdf,txt}
查找所有BUT pdf和txt文件
shopt -s extglob nullglob
printf "%s\n" !(*.pdf|*.txt)
如果你想进入子目录
shopt -s extglob nullglob globstar
printf "%s\n" **/!(*.pdf|*.txt)
答案 2 :(得分:0)
你可以考虑做这样的事情来删除$ target下不是png文件的每个文件:
find $target -name '*' | grep -v '\.(png|txt)$' | xargs rm