
Gostaria de encontrar arquivos com extensão wav com o mesmo nome de arquivo, apenas com extensão diferente (que é mp3) no mesmo diretório.
Eu tentei o seguinte comando estruturado até agora:
$ 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.
Responder1
Se você deseja diff
a saída de alguns comandos, usesubstituição de processo<(...)
em vez de substituição de comando $(...)
. Caso contrário, parece que deveria funcionar.
diff $(foo)
coloca a saída de foo
na linha de comando de diff
, enquanto diff
deseja que o nome de um arquivo seja lido. diff <(foo)
organiza a saída de foo
para estar disponível em um fd e fornece diff
um nome de caminho que corresponde ao fd já aberto ( /dev/fd/NN
, pode ser específico do sistema).
Ao ler a pergunta novamente, talvez você queira fazer algo assim:
for f in *.wav ; do
b=${f%.wav}
if [ -f "$b.mp3" ] ; then echo "$b.mp3 exists" ; else
echo "$b.mp3 missing" ; fi
done
Isso diria se todos .wav
os arquivos no diretório possuem um .mp3
arquivo correspondente. (Mas não mostraria nenhum .mp3
arquivo que não tivesse um correspondente .wav
, é claro.)