如何快速删除具有大量子目录的目录中的文件?

如何快速删除具有大量子目录的目录中的文件?

我有一个这样的目录:

my-app/
├─ 1/
├─ 2/
├─ .... (a lot of subdirectories)
├─ N/

每个子目录中都有大量的 PNG 文件,例如:

1
├─ 1.png
├─ 2.png
├─ ....
├─ 100000000.png (not sure)

我甚至不知道每个目录中有多少个 png 文件,因为我无法让其ls运行。也许它们太多了,甚至ls会卡住。

PNG 文件是由脚本错误生成的。所以我不需要备份任何东西。我只想删除所有 PNG 文件,但保留目录结构。

我尝试过rm但是它像命令一样卡住了ls

我应该怎么办?

答案1

任何一个

find my-app/ -mindepth 2 -name '*.png' -delete

或(在 bash shell 中)

printf '%s\0' my-app/*/*.png | xargs -r0 rm

如果存在子目录,前者将递归到子目录中;-maxdepth 2如果存在子目录,则添加,但这不是所希望的。第二个不会递归,但如果需要,可以使用 进行递归globstar

相关内容