0

我想知道是否可以删除目录中的每个文件,但那些具有特定扩展名的文件?

所以,类似的东西会删除除 png 文件之外的所有文件:

 find "$target" ! -name "*.png" -printf '%f\n' -delete;

但是,除了 *.png 和 *.txt 文件之外,我将如何删除文件夹中的所有内容?

谢谢

4

3 回答 3

2

find让您使用-oboolean or

find "$target" ! \( -name "*.png" -o -name "*.txt" \) -printf '%f\n' -delete;
于 2013-07-25T01:26:33.237 回答
2

仅查找 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)
于 2013-07-25T03:34:42.567 回答
0

您可以考虑做这样的事情来删除 $target 下不是 png 文件的每个文件:

find $target -name '*' | grep -v '\.(png|txt)$' | xargs rm
于 2013-07-25T01:25:21.277 回答