在本质上是 BSD 的终端中运行 MacOS,因此在这里发布我的问题而不是询问不同的问题。我想在后续步骤中通过随机删除文件来修剪我的图像数据集。一些目录有超过 100 万张 jpg。我的数据位于主目录中,子目录的 maxdepth 仅为 1:
-master
-data1
image.jpgs
-data2
image.jpgs
-data3
image.jpgs
-data4
image.jpgs
... and so forth
我找到了这个链接:
https://superuser.com/questions/1186350/delete-all-but-1000-random-files-in-a-directory
...并想出了:
for f in *.jpg; do find "$f" -type f -print0 | sort -R | tail -n +50001 | xargs -0 rm; done
虽然它确实有效,但我希望它递归地为子目录执行此操作,因此我不必为每个目录手动执行此操作。所以我的问题/要求是:
- 我可以以某种方式优化它以加快速度吗?
- sort/tail 在遇到少于 50,000 个文件的目录时会返回错误吗?