Como encontrar e copiar arquivos com espaços?

Como encontrar e copiar arquivos com espaços?

Estou tentando encontrar mp3arquivos 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 findcomando lista todos os arquivos escapados corretamente, mas gawkparece ter problemas com isso. O findcomando 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 gawkcomando é visto como $11a 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.

informação relacionada