Me gustaría copiar un grupo de archivos a la carpeta de destino. Pero sin necesidad de generar una nueva instancia cp
para cada operación.
El formato de argumento cp
parece ser:
cp src_file1 src_file2 src_file3 dest_dir/
Suponiendo que tengo un archivo con los nombres de los archivos fuente enumerados línea por línea, ¿cómo se puede hacer esto?
Como tengo una gran cantidad de archivos, la idea de @Scott a continuación no funcionará, ya que alcanzará la longitud máxima de la línea de comando.
Me gustaría de alguna manera canalizar ese archivo de nombres de archivos cp
y dejar que haga su trabajo. xargs
Tampoco parece poder ayudar, ya que quiere agregar la expansión al final de la línea de comando.
Se puede hacer esto?
Gracias
Respuesta1
si filelist
contiene
apple
orange
banana
donde esos son los nombres de los archivos que desea copiar al fruity
directorio, escriba
cp `cat filelist` fruity
No necesitas el /
al final.
Advertencia: esto no funcionará si alguno de los nombres de archivos contiene espacios, por ejemplo, passion fruit
.
Respuesta2
Simular print0
de encontrar:
cat filelist |perl -p -e 's/\n/\000/' |xargs -0 cp --target-directory dest_dir/
esta muestra incluye xargs -0
,--target-directory