zshを使用してファイル名で2つのフォルダを区別する方法はありますが、ファイル名の先頭のみですか?

zshを使用してファイル名で2つのフォルダを区別する方法はありますが、ファイル名の先頭のみですか?

だから、似たようなファイルがたくさんあるフォルダが2つあり、ファイル名にバージョンが書かれているので、ファイル名の先頭が同じであることを確認したいと思います(例:「sample-1.12」と「サンプル-1.13」は同じと見なすべきです)。 )同じ名前のファイルを持たない反対のフォルダでファイルを見つけます。

確認するファイル名の最初の部分は、最初のダッシュ、アンダースコア、または角かっこで終わります。

答え1

${a:|b}配列減算演算子を使用できます。

dir1=/some/dir
dir2=/some/other/dir

a=($dir1/*[[_-]*(N:t)) # [t]ail of every file with at least one -, [ or _
b=($dir2/*[[_-]*(N:t))

a=(${a%%[[_-]*}) # strip [*, _* or -* suffix
b=(${b%%[[_-]*})

print -r in $dir1 and not in $dir2:
print -rC1 -- ${a:|b}
print -r in $dir2 and not in $dir1:
print -rC1 -- ${b:|a}

関連情報