我有一个上传目录,我想从中删除随机 1000 张图片。我怎么能用命令做到这一点?
我可以删除单个,rm
但需要很长时间.. 有没有办法在 ubuntu 上批量删除?
find /uploads -maxdepth 1 -type f -name "*.jpg" -print0 | \
head -z -n 1000 | xargs -0 rm
该find
命令在目录中查找任何-type f
名为*.jpg
( -name "*.jpg"
) 的文件 ( )/uploads
并且不会递归到子目录 ( -maxdepth 1
) (它通常会这样做)。然后打印文件名,中间\0
有一个分隔符。这是必要的,因为文件名可能包含奇怪的字符(如空格等)。
该输出被输入到head
命令中。它读取-n 1000
由\0
( -z
)分隔的前 1000 行( )。
最终,这 1000 行(=文件名)被送入xargs
其中,也期望这些行被\0
( -0
)分隔,然后rm
以所有这 1000 行作为参数执行。
如果只想预览结果,将命令改为
find /uploads -maxdepth 1 -type f -name "*.jpg" -print0 | \
head -z -n 1000 | xargs -0 echo rm
即替换xargs … rm
为xargs … echo rm
。也许也替换1000
用10
的预览。
免责声明:我不知道打印的文件是如何find
排序的,但至少它不是一些明显的属性(如姓名或年龄)并且看起来是随机的。如果你真的想选择 1000 个随机文件,你需要插入 asort -R
来随机排序(再次-z
用于\0
分隔符):
find /uploads -maxdepth 1 -type f -name "*.jpg" -print0 | \
sort -z -R | head -z -n 1000 | xargs -0 rm
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句