Solución 1:
Para evitar un uso inútil de cat
(y si no usa rsync
):
xargs -a file_list.txt mv -t /path/to/dest
Esto manejará cualquier nombre de archivo válido, a menos que contenga una nueva línea, si los archivos se enumeran uno por línea.
Solución 2:
rsync tiene varias opciones que pueden tomar una lista de archivos para procesar (--files-from
, --include-from
, etc.).
Por ejemplo, esto hará el truco:
rsync -a /source/directory --files-from=/full/path/to/listfile /destination/directory
Solución 3:
for file in `cat listoffiles`; do mv "$file" /path/of/destination ; done
asumiendo bash, más listoffiles
que contiene un archivo por línea. Mi única objeción a la ruta rsync es que el OP solicita un método para mover los archivos, no para copiarlos. rsync tiene más banderas que una boda real, por lo que estoy seguro de que se puede modificar aún más para hacer eso, ¡pero a veces lo más simple es mejor!
Solución 4:
rsync --files-from=file_list.txt /path/to/source/ /path/to/dest/
Rsync tiene el beneficio adicional sobre el cp
o mv
comandos porque creará carpetas automáticamente si no existen.
Solución 5:
Esto depende del formato del archivo de texto que tenga. Por ejemplo, si tiene la lista de archivos escrita de tal manera que Cada archivo se encuentra en una nueva línea. Puedes usar xargs como:
$ cat your_text_file | xargs cp -t /path/to/destination
Además, puedes usar find
comando con -exec
opción. para copiar/mover los archivos.