コマンドラインでファイル一致パターンを検索しますか?

コマンドラインでファイル一致パターンを検索しますか?

比較的複雑なコマンドラインのファイル一致パターンについて、誰か助けてくれませんか?

次のようなディレクトリにファイルがあります:

1.png
1_thumb.png
1-1.png
1-1_thumb.png
1-2.png
1-2_thumb.png
2.png 
2_thumb.png
2-1.png
2-1_thumb.png
3.png
3_thumb.png
3-1_thumb.png

同じファイル名のコピーがどこかに存在しないすべてのファイルをリストします-1。したがって、上記の例では、結果は になります3.png

注意: ファイルとそのコピー (「-1」を含む) のファイル サイズは同じになります。

誰かこれをどうやってやるか提案してくれませんか?

答え1

-nのすべてのファイルがコピーであり、サムネイルも必要ないと仮定すると、これは KornShell (ksh) で機能し、extglobオプションを設定した Bash でも機能します ( shopt -s extglob)。

for f in !(*_thumb.png|*-[1-9].png); do
  g=${f%.png}-1.png
  test -f $g || echo $f
done

答え2

コピーであると判断されるのが「-1」だけの場合、2-1.pngまたは2-1_thumb.pngファイルのコピーはありません。これが一致基準であり、サムネイルもテストしたい場合は、次のようにします。

for i in `ls |grep -v "\-1"  | cut -f1 -d.`; do 
    if `echo $i | grep thumb > /dev/null`; then 
        test -f `echo $i.png | sed 's/_/-1_/g'` || echo $i.png; 
    else 
        test -f $i-1.png || echo $i.png; 
    fi; 
done

そうでなければ、親指がカウントされない場合は、KAKの回答が適しているはずです

関連情報