Estou tentando encontrar mp3
arquivos em qualquer subdiretório e copiá-los, por exemplo, no diretório atual. Aqui está o comando que tentei:
find . -name *.mp3 -ls | gawk '{printf("cp %s .\n", $11);}'
O find
comando lista todos os arquivos escapados corretamente, mas gawk
parece ter problemas com isso. O find
comando lista, por exemplo, o seguinte arquivo
8132326 7392 -rw-r--r-- 1 alexander alexander 7566180 Nov 27 20:22 ./For\ The\ Kids\ EP\ [12_\ Vinyl\ EP\ -\ DP003]/01\ A1\ For\ the\ Kids.mp3
enquanto o gawk
comando é visto como $11
a string
./For
em vez de
./For\ The\ Kids\ EP\ [12_\ Vinyl\ EP\ -\ DP003]/01\ A1\ For\ the\ Kids.mp3
Por que é que? E como lidar com isso corretamente (com ou sem gawk
)?
Responder1
O comando correto é
find /folder/to/be/searched -type f -name '*.mp3' -exec cp "{}" /target/folder \;
É mais simples, portanto, menos chances de erros. Única coisa: lembre-se de usar caminhos absolutos, não relativos.