删除具有特定名称的文件

有人能把我引向正确的方向吗? 我有2GB的图像,其中包括3种types。 例如:

  • 拇指12345.jpg
  • popup式12345.jpg
  • 12345.jpg

有没有一个快速的脚本/命令我可以运行删除名称中没有“拇指”或“popup”的所有文件。 基本上 – 我只需要删除'12345.jpg'

相当新的这一点,任何帮助将不胜感激! 干杯

在下面的所有代码片段中,运行命令来检查它显示的文件是否真的是你想要删除的文件。 然后通过用rm-printreplaceecho-delete执行删除操作

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

 echo [0-9]*.jpg 

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

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

如果你特别想匹配popupthumb ,没有其他的前缀:

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

在bash≥4.0或zsh中,只要不遇到命令行长度限制,就可以更简单地遍历子目录。 在bash中,首先运行shopt -s globstar 。 然后:

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

哈哈不止一种方式,less过程:)

从find你想要保留的东西开始:

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

否定expression式:

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

适用于您的示例数据….

如果你满意添加一个删除。

在re_format(3)中阅读它并find(1)知道应用哪些选项,以便您的查找理解扩展正则expression式