Para mover archivos de un directorio a otro, el 'mv El comando ‘se usa en Linux. Este comando está disponible en Linux de forma predeterminada y se puede usar para mover archivos y directorios.
La sintaxis a usar para comando mv es:
$ mv file1 file2 /tmp
Si queremos mover archivos de, digamos, la misma extensión (Ej. txt ) o que están numerados de forma incremental (Ej. file_1 , archivo_2 , etc.), se pueden usar comodines para especificar todos esos archivos en lugar de escribir cada nombre.
$ mv *.txt /tmp $ mv file_* /tmp
Básicamente, 'mv ‘ puede tener cualquier cantidad de argumentos, que son los archivos o directorios que se van a mover. El último argumento es el directorio de destino donde se moverán.
Problema al mover una gran cantidad de archivos
Los sistemas Linux tienen un límite predefinido en la cantidad máxima de argumentos que se pueden usar con un solo comando. Este límite varía de un sistema a otro según el tamaño de la pila.
Por lo tanto, si se especifica una cantidad muy alta de archivos con el comodín con 'mv ', P.ej. más de cien mil archivos, arroja un error:“Lista de argumentos demasiado larga ”.
Por ejemplo, en la imagen de abajo, la carpeta contiene 253420 archivos Por lo tanto, da el error antes mencionado cuando intentamos moverlos.
$ ls -l | wc -l $ ls | head -1000
$ mv file_* /tmp
Solución:utilice el comando "Buscar"
Para resolver este problema, hacemos uso de la función 'buscar ' dominio. El 'buscar El comando básicamente busca archivos en directorios basados en diferentes parámetros.
Ejecutamos 'buscar ‘ en el mismo directorio que los archivos que queremos mover. Luego hacemos uso del '-exec'
parámetro de 'buscar ‘ que le permitirá ejecutar cualquier comando sobre la salida de find.
Ejecutamos 'mv ' con '-exec'
parámetro.
$ find . -name "file_*" -exec mv {} /tmp \;
Aquí, el primer argumento, '.'
((punto) directorio actual) es el directorio donde encontrar los archivos. El argumento “-name”
y la cadena posterior especifica la expresión mediante la cual se pueden listar los archivos requeridos.
Luego especificamos el 'mv ‘ comando después de un argumento '-exec'
. Los corchetes abiertos '{ }'
son un marcador de posición para el argumento que se utilizará a partir de la salida de find.
Puede confirmar ejecutando lo siguiente y verificar que los archivos se hayan movido correctamente a ‘/tmp’ .
$ ls -l /tmp | wc -l
Lectura relacionada :Cómo copiar una gran cantidad de archivos en Linux
Conclusión
En este artículo, hemos visto cómo mover una gran cantidad de archivos de un directorio a otro y omitir con éxito la 'Lista de argumentos demasiado larga ' error en Linux.
Si tiene algún comentario o pregunta, ¡háganoslo saber en los comentarios a continuación!