如何从文件夹及其所有子文件夹中删除具有特定扩展名的所有文件?
我想从我的音乐文件夹中删除所有.jpg文件,以节省空间。 我的音乐文件夹包含子文件夹,我想知道是否有命令从所有这些文件夹中删除所有.jpg文件,无论其级别如何。 谢谢你的帮助!
最简单的方法(如果您使用的是Ubuntu Desktop):
转到Nautilus中的音乐文件夹,按Ctrl + F并搜索.jpg
。
然后删除它
您还可以更改位置,以便更具体地进行搜索。
更新
搜索.jpg
后更具体点击绿色按钮Select File type Picture
然后仅从搜索中删除jpg
.
点然后reload
,如下图所示
它的作用是搜索图片文件,如
.jpg .png .gif
和所有其他Picture Format
文件
命令行的快速而干净的解决方案将是
cd find . -type f -iname \*.jpg -delete
-
.
告诉我开始在当前文件夹中搜索。 -
-type f
告诉find只查找文件。 -
-iname
使搜索大小写不敏感。 -
-delete
告诉find删除/删除找到的所有文件。
我建议首先运行不带-delete
的命令,以获取在命令中包含-delete
时将删除的文件列表。 这样一个小错字不会删除你不想要的任何东西。
有关如何使用find
及其function的更多信息,请参阅man find
请注意,使用-delete
时, find
不会产生任何输出。
关于多个扩展的评论
find . -type f \( -name \*jpg -o -name \*png \) -delete
-
( .. )
组表达。 需要从shell中转义,因此在示例中为\( .. \)
-
-o
逻辑或
因此,上面的示例将匹配任何在其名称末尾有jpg
或png
文件。 可以以相同的方式添加更多扩展。 只要确保在每个-name
语句之间记住-o
,如果未指定-o
,则find
将默认为-a
(和),由于文件不能同时以jpg
和png
结尾,因此无效。
这应该做到这一点
sudo rm -rf -d ~/Music/*.JPG
这将删除Music文件夹中的所有.JPG文件。
Bash的shopt -s globstar
在这里可用于递归globbing:
bash-4.3$ tree . ├── 10.jpg └── subfolder ├── 5.jpg └── another_subfolder └── 15.jpg 2 directories, 3 files bash-4.3$ shopt -s globstar bash-4.3$ rm ./**/*.jpg bash-4.3$ tree . └── subfolder └── another_subfolder