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.
Estou tentando encontrar mp3
arquivos em quaisquer subdiretórios e copiá-los, por exemplo, no diretório atual. Aqui está o comando que eu tentei:
find . -name *.mp3 -ls | gawk '{printf("cp %s .\n", $11);}'
O comando find
lista todos os arquivos que escaparam corretamente, mas gawk
parece ter problemas com ele. O comando find
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 comando gawk
vê como $11
a string
./For
em vez de
./For\ The\ Kids\ EP\ [12_\ Vinyl\ EP\ -\ DP003]/01\ A1\ For\ the\ Kids.mp3
Por que isso? E como lidar com isso corretamente (com ou sem gawk
)?
Tags command-line find linux