删除具有特定结尾的文件。需要更具体的东西

时间:2014-06-22 12:29:37

标签: wordpress bash file terminal thumbnails

我正在尝试清除Wordpress创建的所有缩略图,因为我正在计划进行CMS切换。

find  -name \*-*x*.* | xargs rm -f

但是我不太了解bash或正则表达式,以便弄清楚如何添加更多的特殊性,例如只会删除以下内容

所有生成的文件都具有

的语法
<img-name>-<width:integer>x<height:integer>.<file-ext> syntax

3 个答案:

答案 0 :(得分:1)

你可以试试这个:

find -type f |  grep -P '\w+-\d+x\d+\.\w+$' | xargs rm

如果路径中有空格:

find -type f  |  grep -P '\w+-\d+x\d+\.\w+$' | sed -re 's/(\s)/\\\1/g' | xargs rm

示例:

find -type f |  grep -P '\w+-\d+x\d+\.\w+$' | sed -re 's/(\s)/\\\1/g' | xargs ls -l
-rw-rw-r-- 1 tiago tiago 0 Jun 22 15:14 ./image-800x600.png
-rw-rw-r-- 1 tiago tiago 0 Jun 22 15:17 ./test 2/test 3/image-800x600.png

答案 1 :(得分:1)

您没有引用或转义所有通配符,因此shell会在find执行之前尝试展开它们。

引用它应该有效

find -name '*-*x*.*'| xargs echo rm -f

当您对其有效时,请移除echo。您还可以通过切换到-regex来检查其中两个字段是否为数字,但不确定您是否需要/想要这些字段。

正则表达式

find -regex '^.*/[A-Za-z]+-[0-9]+x[0-9]+\.[A-Za-z]+$' | xargs echo rm -f

注意:我假设img-namefile-ext只能包含字母

答案 2 :(得分:0)

以下GNU find命令将删除包含此<img-name>-<width:integer>x<height:integer>.<file-ext> syntax字符串的所有文件。而且我还假设相应的文件在其文件名中有.

find . -name "*.*" -type f -exec grep -l '<img-name>-<width:integer>x<height:integer>.<file-ext> syntax' {} \; | xargs rm -f

<强>解释

  • .将要进行查找操作的目录。(.代表当前目录)

  • -name "*.*"文件的文件名必须带有点。

  • -type f仅限文件。

  • -exec grep -l '<img-name>-<width:integer>x<height:integer>.<file-ext> syntax' {}打印包含上述模式的文件名。

  • xargs rm -f对于每个已创建的文件,文件名都被输入xargs并被删除。