
Ich möchte Dateien mit der Erweiterung „WAV“ finden, die denselben Dateinamen haben, sich aber in der Erweiterung (MP3) unterscheiden und sich im selben Verzeichnis befinden.
Ich habe bisher den folgenden strukturierten Befehl ausprobiert:
$ 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.
Antwort1
diff
Wenn Sie die Ausgabe einiger Befehle wünschen , verwenden SieProzesssubstitution<(...)
anstelle von Befehlsersetzung $(...)
. Ansonsten scheint es zu funktionieren.
diff $(foo)
legt die Ausgabe von foo
in die Befehlszeile von ab diff
, während diff
der Name einer zu lesenden Datei gewünscht wird. diff <(foo)
sorgt dafür, dass die Ausgabe von foo
von einem FD aus verfügbar ist, und gibt diff
einen Pfadnamen an, der dem bereits geöffneten FD entspricht ( /dev/fd/NN
, kann systemabhängig sein).
Wenn Sie die Frage jedoch noch einmal lesen, möchten Sie vielleicht einfach so etwas tun:
for f in *.wav ; do
b=${f%.wav}
if [ -f "$b.mp3" ] ; then echo "$b.mp3 exists" ; else
echo "$b.mp3 missing" ; fi
done
Dadurch wird angezeigt, ob alle .wav
Dateien im Verzeichnis eine entsprechende Datei haben . (Es werden aber natürlich .mp3
keine .mp3
Dateien angezeigt, die keine entsprechende Datei haben .).wav