¿Cómo buscar y copiar archivos con espacios?

¿Cómo buscar y copiar archivos con espacios?

Estoy intentando encontrar mp3archivos en cualquier subdirectorio y copiarlos, por ejemplo, en el directorio actual. Aquí está el comando que probé:

find . -name *.mp3  -ls | gawk '{printf("cp %s .\n", $11);}'

El findcomando enumera todos los archivos escapó correctamente, pero gawkparece tener problemas. El findcomando enumera, por ejemplo, el siguiente archivo

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

mientras que el gawkcomando ve como $11la cadena

./For

en lugar de

./For\ The\ Kids\ EP\ [12_\ Vinyl\ EP\ -\ DP003]/01\ A1\ For\ the\ Kids.mp3

¿Porqué es eso? ¿Y cómo manejar esto correctamente (con o sin gawk)?

Respuesta1

El comando correcto es

 find /folder/to/be/searched -type f -name '*.mp3' -exec cp "{}" /target/folder \;

Es más sencillo y, por tanto, hay menos posibilidades de error. Lo único: recuerda usar rutas absolutas, no relativas.

información relacionada