0

我想删除特定目录中的所有 png 图像。

我有以下目录和图像,如何一次删除所有 png 文件?

.
├── 1
│ ├── 2
│ │ ├── 3
│ │ └── 3.png
│ └── 2.png
└── 1.png

我尝试了以下命令。

rm -rf *.png       #only 1.png was deleted.
rm -rf **/*.png    #only 2.png was deleted.
rm -rf **/**/*.png #only 3.png was deleted.
4

3 回答 3

2

您需要设置globstar选项(在 Bash 4 中引入)才能使递归通配符起作用

来自Bash 参考手册

globstar

    如果设置,文件名扩展上下文中使用的模式 '**' 将匹配所有文件以及零个或多个目录和子目录。如果模式后跟“/”,则只有目录和子目录匹配。

所以这应该有效

shopt -s globstar
rm -f **/*.png

或者使用findanddelete动作

find . -name '*.png' -delete

注意“-r”开关rm

-r切换“递归删除目录及其内容”(来源:man rm)。默认情况下,rm不能删除目录。该开关不会改变文件名扩展或通配的工作方式。

于 2013-07-06T17:26:11.143 回答
0

find . -name \*.png | xargs rm

于 2013-07-06T17:16:39.567 回答
0
find . -name "*.png" -exec rm -rf {} \;

这篇文章有一个非常相似的问题:如何从项目中删除所有 .pyc 文件?

于 2013-07-06T17:18:55.700 回答