我想知道是否可以删除目录中的每个文件,但那些具有特定扩展名的文件?
所以,类似的东西会删除除 png 文件之外的所有文件:
find "$target" ! -name "*.png" -printf '%f\n' -delete;
但是,除了 *.png 和 *.txt 文件之外,我将如何删除文件夹中的所有内容?
谢谢
find
让您使用-o
boolean or
:
find "$target" ! \( -name "*.png" -o -name "*.txt" \) -printf '%f\n' -delete;
仅查找 pdf 和 txt 文件(要删除,请将 printf 替换为 rm)
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)
您可以考虑做这样的事情来删除 $target 下不是 png 文件的每个文件:
find $target -name '*' | grep -v '\.(png|txt)$' | xargs rm