zsh globbing - 重複したファイル名文字列を含むファイルを検索する

zsh globbing - 重複したファイル名文字列を含むファイルを検索する

形式のファイル名を持つファイルディレクトリがあります<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}:配列減算。

おすすめ記事