
同じディレクトリ内で、ファイル名は同じで拡張子 (mp3) のみが異なる、wav 拡張子のファイルを検索したいと思います。
これまでに、次の構造化コマンドを試しました。
$ 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
が、 はdiff
読み取るファイルの名前を必要とします。 はの出力がfd から利用できるようdiff <(foo)
に準備し、すでに開かれている fd に対応するパス名を指定します ( 、システム固有の可能性があります)。foo
diff
/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