ファイル名の数字部分が指定された数字より大きい場合、ファイルを削除する方法は?

ファイル名の数字部分が指定された数字より大きい場合、ファイルを削除する方法は?

次のファイルがあります。

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); y2つの数字のいずれかを省略して範囲を開いたままにすることができます。)たとえば、次のようになります。

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

そして2番目は次のように印刷されます。

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 '{}' \;

括弧内の数字を削除する必要がある数字に置き換え、必要に応じて位置を変更します。

関連情報