删除具有特定名称的文件

删除具有特定名称的文件

有人能给我指点迷津吗?我有 2GB 的图片,包括 3 种类型。例如:

  • 拇指-12345.jpg
  • 弹出-12345.jpg
  • 12345.jpg

是否有一个快速脚本/命令可以运行,以删除名称中不包含“thumb”或“popup”的所有文件。基本上 - 我只需要删除“12345.jpg”

对此还很陌生,任何帮助都将不胜感激!谢谢

答案1

在下面的所有代码片段中,运行命令以检查它显示的文件是否确实是您要删除的文件。然后通过替换echorm或替换-print为来执行删除-delete

如果所有文件都在同一个目录中,则可以删除名称以数字开头的文件。

echo [0-9]*.jpg

如果您的文件位于目录层次结构中,请使用find

find . -name '[0-9]*.jpg' -print

如果您特意想匹配popup并且thumb没有其他前缀:

find . -name '*.jpg' \( -name 'popup-*' -o -name 'thumb-*' -o -print \)

在 bash ≥4.0 或 zsh 中,有一种更简单的方法来遍历子目录,只要您不遇到命令行长度限制。在 bash 中,首先运行shopt -s globstar。然后:

echo **/[0-9]*.jpg

答案2

哈哈,方法多多,流程少:)

首先找到您想保留的内容:

find -E . -type f -regex '.*((popup)|(thumb))-[[:digit:]]*\.jpg' 

否定表达式:

find -E . -type f \! -regex '.*((popup)|(thumb))-[[:digit:]]*\.jpg' 

适用于您的样本数据....

如果您满意,请添加-delete

阅读重新格式化(3)查找(1)知道要应用哪些选项,以便您的发现理解扩展正则表达式

相关内容