命令行 regextype 删除文件

命令行 regextype 删除文件

我有一系列文件始终以至少 5 个数值开头,例如:

85966_88.jpg

通过这个答案我了解到在命令中使用 find 和 regextype 来删除这样的文件:

find . -regextype posix-extended -iregex './a_[0-9]{6}' -execdir bash -c '[[ ${1##./a_} > 000750 ]] && echo $1' "removing: " {} \;

我修改了这个命令来满足我的需要,如下所示:

find . -regextype posix-extended -iregex './[0-9]{5}' -execdir bash -c '[[ ${1##./} > 000001 ]] && echo $1' "removing: " {} \;

我执行了命令,但它没有删除文件。我不知道如何删除前 5 位数字为数字的所有 .jpg,然后 _

答案1

首先,命令如书面不会删除任何内容:正如您链接的答案中所述

用命令测试一下echo,一旦您确定它列出了正确的文件,rm就可以使用。

其次,对于您的情况来说,这太复杂了,因为您不想将删除限制在匹配的范围或子集内(因此您不需要 shell 测试) - 您可以简单地这样做

find -regextype egrep -regex '.*/[0-9]{5}_.*\.jpg' -print

(进行测试)并-print-delete您满意其正常工作后进行替换。

然而即使正则表达式看起来过于复杂 - 一个简单的全局匹配实际上可以减少输入:

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

(再次,当您确定时请替换-print为)。-delete

如果你不需要递归搜索,一个简单的 shell glob 就可以工作:

rm -i [0-9][0-9][0-9][0-9][0-9]_*.jpg

相关内容