Has*_*gır 5 delete files 16.04
我有一个上传目录,我想从中删除随机 1000 张图片。我怎么能用命令做到这一点?
我可以删除单个,rm但需要很长时间.. 有没有办法在 ubuntu 上批量删除?
find /uploads -maxdepth 1 -type f -name "*.jpg" -print0 | \
head -z -n 1000 | xargs -0 rm
Run Code Online (Sandbox Code Playgroud)
该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
Run Code Online (Sandbox Code Playgroud)
即替换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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4505 次 |
| 最近记录: |