如何在 Linux 中删除多个文件?

如何在 Linux 中删除多个文件?

我的预览帖子是关于删除系统中的单个名称文件,但我实际上需要删除大范围的文件。

上一篇

如何通过终端删除不同文件夹中的文件?

例如

它们是junkImg-5.png,,junkImg-60.png意思是有junkImg-30junkImg-45...等等。

命令行中是否有任何快速命令可以删除它们?

我努力了

find /project/test/ -name 'junkImg-5*' -exec rm -f {} \ ;

但是速度太慢了,而且我有很多图片。有没有办法让 Linux 指定范围?非常感谢!

答案1

只需使用括号扩展删除一定范围的文件:

rm /project/test/junkImg-{5..60}.png

这将删除 junkImg 文件 5 到 60,只需一个rm进程。您也可以先用 替换该rm命令,ls以确保它选择了您想要的文件,然后再用 替换它rm

答案2

寻找用途Shell 模式匹配为了-姓名谓词,因此您可以使用-或者谓词和这些模式:

find DIRECTORY -name 'junkImg-[5-9].png' -or -name 'junkImg-[1-6]?.png' -delete

您还可以使用以下方法排除前四个文件:-不是谓词:

find DIRECTORY -name 'junkImg-*.png' -not -name 'junkImg-[1-4].png' -delete

要测试命令是否正常工作,请始终在不-删除首先。这将列出文件而不是删除它们。

答案3

每次删除时都要启动一个新rm命令。这不是最快的方法。只有当您的文件太多而无法一次性列出所有文件时才需要这样做。

为了加快速度,可以:

  1. 更改-exec rmwith-ls并通过 xargs 将其传输。如果您认为某些文件名比较难理解(例如文件名中有空格),请添加 -print0。
  2. 或者更好的是,使用 finds build in -delete

相关内容