Quiere copiar o mover 5,00,000 o más archivos a la vez, pero la Terminal se queja de que «la lista de argumentos es demasiado larga».
Si creó muchos archivos usando el método descrito en este artículo («Crear varios archivos y directorios a la vez en la terminal de Linux»), puede ser difícil moverlos o copiarlos todos a la vez en una nueva ubicación.
Afortunadamente, hay varias formas de mover o copiar rápida y fácilmente una gran cantidad de archivos en Linux.Uno de esos métodos es utilizar la herramienta de línea de comandos cp
, tar
y rsync
que permiten copiar y mover grandes cantidades de archivos de forma rápida y sencilla, pero tienen un cierto umbral por encima del cual el comando arrojará un error.
Entonces, echemos un vistazo a cómo copiar y mover de manera eficiente una gran cantidad de archivos desde la línea de comandos.
Tabla de Contenidos
Crear problema para mover una gran cantidad de archivos usando el comando táctil
Para mayor claridad, déjame crear 5,00,000 archivos usando mi sistema touch
Ordenarque llevará unos minutos, y luego probaremos nuestro comando en el archivo recién creado.
También puede crear una gran cantidad de archivos si lo desea ejecutando:
$ for i in {1..500000};do touch filename$i.txt; done
Cuando esté listo, déjame correr mv
Ordenar Mueva todos los archivos a la nueva ubicación. Como era de esperar, la terminal muestra «mv * temp zsh: Argument list too long: mv».
Resuelva el problema de usar el comando de búsqueda para mover una gran cantidad de archivos
La razón es simple: el kernel tiene limitaciones, que varían de un sistema operativo a otro, que limitan la cantidad de argumentos que puede pasar en una sola línea de comando.
cuando ejecutas un comando como mv
, cp
, rm
o tar
su lista de argumentos será demasiado larga a medida que el número de archivos aumente más allá del límite del kernel, lo que eventualmente conducirá a un error de lista de argumentos demasiado larga.
Para arreglar esto, podemos usar find
Ordenar y -implementar Opciones para ejecutar comandos en una gran cantidad de archivos
Pero si desea conocer el límite del kernel, puede ejecutar el comando getconf ARG_MAX
En su terminal, esto le dará la cantidad máxima de argumentos que puede pasar en una sola línea de comando para evitar errores de argumento.
Bueno, ¡basta ya de charlas triviales! Ahora déjame demostrarte una forma de copiar o mover rápidamente una gran cantidad de archivos desde la terminal.
parte de comando
mediante el uso find
comando con -implementar opción, que permite una copia más eficiente de grandes cantidades de archivos, lo que facilita a los usuarios acceder a sus datos y almacenarlos en ubicaciones específicas
Cuando desee copiar muchos archivos, debe usar el comando de búsqueda -implementarque copiará el archivo de los resultados del comando de búsqueda y lo moverá a la ubicación especificada.
Esta es la sintaxis que necesitará usar en la terminal; simplemente reemplace los datos con sus datos reales.
$ find /FILE-PATH/ -name "PASS-FILE-PATTERN" -exec cp {} "/PASS-TARGET-DIRECTORY/" \;
Supongamos que quiero copiar todos los archivos /inicio/shen/Arena de prueba al nuevo directorio /home/shen/directorio de pruebaentonces crearía el siguiente comando para copiar todos los archivos.
$ find /home/shen/test-arena -name "filename*" -exec cp {} -v /home/shen/test-dir \;
Puedo hacer lo mismo para mover todos los archivos grandes arena de prueba llegar directorio de prueba Simplemente reemplace el comando cp con mv y descanse, todo es igual
$ find /home/shen/test-arena -name "filename*" -exec mv {} -v /home/shen/test-dir \;
Incluso puede limitar el comando de búsqueda para que solo funcione en el directorio actual – profundidad máxima parámetros, como se muestra en el siguiente comando:
$ find . -maxdepth 1 -name "file_*" -exec cp {} -v target/ \;
or
$ find . -maxdepth 1 -name "file_*" -exec mv {} -v target/ \;
envolver
Espero que este artículo le haya ayudado a entender cómo mover y copiar grandes cantidades de archivos en sistemas basados en Unix y cómo encontrar las limitaciones del kernel.
Si conoce otros métodos para mover y copiar grandes cantidades de archivos, compártalos en la sección de comentarios.
Con eso en mente, terminaré esta guía. Si tiene más sugerencias, compártalas a continuación.
Un hombre apasionado por la tecnología que ha explorado algunas tecnologías increíbles y está explorando más. En el camino, tuve la oportunidad de trabajar en el desarrollo de Android, Linux, AWS y DevOps utilizando una variedad de herramientas de código abierto.