2つのファイルのリストを比較して同じファイルを見つけ、拡張子を無視します。

2つのファイルのリストを比較して同じファイルを見つけ、拡張子を無視します。

同じディレクトリで、拡張子がwavの同じファイル名を持つファイルを見つけたいと思います。拡張子のみが異なります(mp3)。

これまで、次のような構造化コマンドを試しました。

$ diff -s $(for i in *.wav; do echo "${i%wav}"; done) $(for i in *.mp3; do echo "${i%mp3}"; done)
diff: extra operand `abc(xyz'
diff: Try `diff --help' for more information.

ベストアンサー1

diff特定のコマンドの出力が必要な場合は、次のようにします。プロセスの交換<(...)コマンドの代わりに$(...)。そうでなければ、これはうまくいくようです。

diff $(foo)fooコマンドラインに出力を挿入し、ファイル名diffも読み取ろうとします。スケジュールされた出力はfdで利用可能で、オープンfd(、システムによって異なる場合があります)に対応するパス名が提供されます。diffdiff <(foo)foodiff/dev/fd/NN


質問をもう一度読んでも、次のようにしたい場合があります。

for f in *.wav ; do
    b=${f%.wav}
    if [ -f "$b.mp3" ] ; then echo "$b.mp3 exists" ; else
        echo "$b.mp3 missing" ; fi
done

.wavこれは、ディレクトリ内のすべてのファイルにそのファイルがあるかどうかを示します.mp3。 (もちろん、.mp3対応するファイルがないファイルは表示されません。).wav

おすすめ記事