我正在尝试清除Wordpress创建的所有缩略图,因为我正在计划进行CMS切换。
find -name \*-*x*.* | xargs rm -f
但是我不太了解bash或正则表达式,以便弄清楚如何添加更多的特殊性,例如只会删除以下内容
所有生成的文件都具有
的语法<img-name>-<width:integer>x<height:integer>.<file-ext> syntax
答案 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-name
而file-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并被删除。