如果文件名称的数字部分大于给定数字,如何删除文件?

如果文件名称的数字部分大于给定数字,如何删除文件?

我有这样的文件:

cap_20151023T122915_791033959.png
cap_20151023T122918_946392456.png
cap_20151023T122920_227637228.png
cap_20151023T122920_875467456.png

我想使用该find命令删除那些大于的,例如,cap_20151023T122919*这将导致删除cap_20151023T122920_227637228.pngcap_20151023T122920_875467456.png

有什么办法可以做到这一点,最好是用一个find命令?

答案1

zsh<[x]-[y]> 全局运算符(匹配 到 范围内的数字,包括x在内y;可以省略任一数字以使范围开放)例如:

print -rl -- **/cap_20151023T<122920->_*

或者,如果您只想选择122920-999999范围内的文件名:

print -rl -- **/cap_20151023T<122920-999999>_*

所以文件名如下:

tmp/cap_20151023T122915_791033959.png
tmp/cap_20151023T122915791_959.png
tmp/cap_20151023T122918_946392456.png
tmp/cap_20151023T122920_227637228.png
tmp/cap_20151023T1229205_875467456.png
tmp/cap_20151023T122920_875467456.png
tmp/cap_20151023T122980_227637228.png

第一个打印:

tmp/cap_20151023T122915791_959.png
tmp/cap_20151023T122920_227637228.png
tmp/cap_20151023T1229205_875467456.png
tmp/cap_20151023T122920_875467456.png
tmp/cap_20151023T122980_227637228.png

而第二个打印:

tmp/cap_20151023T122920_227637228.png
tmp/cap_20151023T122920_875467456.png
tmp/cap_20151023T122980_227637228.png

如果您对结果满意,请替换print -rlrm -f

答案2

这不是最佳的,但这样做可以:

find /where/is/search/folder -name "cap_20151023T1229[2-9]*" -exec rm '{}' \;

只需将括号中的数字替换为您需要删除的内容并根据需要更改位置即可。

相关内容