Buscar y copiar archivos en Terminal

Buscar y copiar archivos en Terminal

Tengo un archivo .txt (llamado list.txt) que contiene una lista de nombres de archivos, incluidas sus rutas. Como:

/Users/Me/Downloads/0001.pdf
/Users/Me/Downloads/0010.pdf
/Users/Me/Downloads/0053.pdf
etc.

Quiero que se copien en una carpeta de mi escritorio llamada "carpeta nueva". Utilizo este script en Terminal para hacerlo:

cp `cat /Users/Me/Desktop/list.txt` /Users/Me/Desktop/new-folder/

¡Y esto funciona estupendamente!
Pero ahora quiero ampliar esta funcionalidad.
En primer lugar, no funciona si los caminos contienen espacios, lo cual no es muy práctico.
En segundo lugar, no siempre estoy seguro de los caminos. Me gustaría que Terminal busque en una determinada carpeta y sus subcarpetas el archivo llamado "0001.pdf".

Mi conocimiento de Terminal está bastante limitado a este script, para que lo sepáis.
Espero que alguien pueda ayudarme y muchas gracias de antemano!

Respuesta1

Puede utilizar xargspara citar cada línea.

xargs -a list.txt -I% cp "%" destination/

Su segundo requisito no es muy práctico, pero suponiendo que la lista sea solo una lista de nombres de archivos, algo como esto podría funcionar:

xargs -a list.txt -L1 -I% find -name "%" -exec cp {} destination/ \; -quit

Pasará líneas sucesivas hasta findlas cuales buscará el primer archivo (en el directorio actual, recursivo) con ese nombre y lo copiará.

información relacionada