GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo mover una gran cantidad de archivos en Linux

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!


Linux
  1. Cómo aumentar el número de límites de archivos abiertos en Linux

  2. Cómo cambiar el nombre de los archivos en Linux

  3. Cómo comprimir varios archivos en Linux

  4. ¿Cómo puedo mover archivos con xargs en Linux?

  5. ¿Cómo mover una partición en GNU/Linux?

Cómo copiar una gran cantidad de archivos en Linux

Cómo Gzip archivos grandes (100GB+) más rápido en Linux

Cómo hacer ping a un número de puerto en Linux

Cómo usar más comandos en Linux para leer archivos de texto grandes

Cómo contar el número de archivos en un directorio en Linux

Cómo comprimir un archivo en Linux