我有这样的文件:
cap_20151023T122915_791033959.png
cap_20151023T122918_946392456.png
cap_20151023T122920_227637228.png
cap_20151023T122920_875467456.png
我想使用该find
命令删除那些大于的,例如,cap_20151023T122919*
这将导致删除cap_20151023T122920_227637228.png
和cap_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 -rl
为rm -f
答案2
这不是最佳的,但这样做可以:
find /where/is/search/folder -name "cap_20151023T1229[2-9]*" -exec rm '{}' \;
只需将括号中的数字替换为您需要删除的内容并根据需要更改位置即可。