Mueva varios archivos de la lista de nombres de archivos a una nueva carpeta

Mueva varios archivos de la lista de nombres de archivos a una nueva carpeta

Tengo una lista de nombres de archivos en list.txt, que tienen 'abc1.png, abc2.png, abc3.png...'.

Sin embargo, no sé los directorios donde están los archivos.

Quiero buscar todos los archivos en el archivo txt y moverlos a una nueva carpeta.

Respuesta1

Necesitasleer cada nombre de archivo línea por línea, luego inténtalo findusando la nameopción y finalmente mvllega al objetivo:

while IFS= read -r filename; do
    find /somewhere -type f -name "$filename" -exec mv -- {} /somewhere/else/ \;
done < file.txt

Se {}reemplazará con la ruta del archivo encontrada.

Respuesta2

Suponiendo que los nombres de sus archivos no contengan ", " o nuevas líneas y que cada archivo exista en list.txt solo una vez. Naturalmente, también debe cambiar el nuevo directorio al directorio que desee. Si falta algún archivo en list.txt, el archivo no se copia (y no se proporciona ninguna información).

sed -s "s/, /\\n/g" list.txt | xargs -IFILE -n1 find -name FILE -exec mv {} newdirectory \;

Respuesta3

Esto es fácil con algo de bash:

primero busque sus archivos con buscar y redirija la salida en otro archivo:

para arg en $(cat list.txt); busque / -name $arg -print >> files_with_path.txt; hecho

luego mv los archivos:

para arg en $(cat files_with_path.txt); hacer mv $arg /tu/destino/carpeta; hecho

información relacionada