形式のファイル名を持つファイルディレクトリがあります<num1>v<num2>.txt
。重複したファイルをすべて探したいです<num1>
。重複したアイテムが見つかった場合は、より小さいアイテムを削除する必要があります<num2>
。
可能ですか?これを処理するためにPythonスクリプトを簡単に書くことができますが、組み込みのzsh機能に最適なアプリケーションになると思いました。
はい
次のファイルのリストでは、最初の3つのファイルに重複した<num1>
部分があります。同様に、4番目と5番目も重複します。
012345v1.txt
012345v2.txt
012345v3.txt
3333v4.txt
3333v7.txt
11111v11.txt
次の内容を含むディレクトリにしたいと思います。
012345v3.txt
3333v7.txt
11111v11.txt
ベストアンサー1
次のことができます。
files=(<->v<->.txt(n))
typeset -A h
for f ($files) h[${f%%v*}]=$f
keep=($h)
echo rm ${files:|keep}
echo
(満足すれば削除)
<->
:任意の数値シーケンス(<x-y>
指定された範囲を持たないグローバル演算子)(n)
:数値ソート${f%%v*}
:Standard / ksh貪欲モードが最後から削除されました。${files:|keep}
:配列減算。