CentOS 5.x
Pido disculpas si esta es una pregunta repetida. He visto muchas preguntas similares (con respecto a la eliminación de archivos) pero no exactamente el mismo escenario.
Tengo un directorio que contiene cientos de miles de archivos (posiblemente más de un millón) y como solución a corto plazo a un problema diferente, necesito mover estos archivos a otra ubicación.
Para fines de discusión, digamos que estos archivos residen originalmente /home/foo/bulk/
y quiero moverlos a/home/foo2/bulk2/
Si lo intento mv /home/foo/bulk/* /home/foo2/bulk2/
me sale un error de "demasiados argumentos".
El Sr. Google me dice que una alternativa para eliminar archivos en masa sería ejecutar find. Algo como: find . -name "*.pdf" -maxdepth 1 -print0 | xargs -0 rm
Eso estaría bien si estuviera borrando cosas, pero en este caso quiero mover los archivos ... Si escribo algo como find . -name "*" -maxdepth 1 -print0 | xargs -0 mv /home/foo2/bulk2/
bash se queja de que el archivo no es un directorio.
¿Cuál es el mejor comando para usar aquí para mover los archivos en masa de un directorio a otro?
Considere
mv
la posibilidad de utilizar el directorio principal en lugar de los archivos:(Pero puede causar problemas si
/home/foo/bulk
debe existir en todo momento).fuente
mkdir
? ¿Y qué hay de ese directorio 'existente en todo momento' o no? ¿Por qué esto aceleraría las cosas?mkdir
se debe a que toda la carpeta y todo lo que contiene se movería al otro directorio y ya no existiría en el directorio anterior. Asegura que el directorio antiguo aún exista. Sin embargo, esto no sería suficiente si hubiera un servicio en ejecución constante que dependiera del primer directorio siempre existente, porque se mueve y luego se recrea. No hace nada más rápido, simplemente simplifica proporcionando menos argumentos.Solo por variedad, me gusta usar cpio en algunos casos como este.
fuente
-print0
y-0
opciones.Con GNU
mv
:En sistemas como OS X que no tienen
mv -t
pero tienen-print0
yxargs -0
:O si los nombres de archivo no contienen espacios, comillas, barras diagonales inversas o líneas nuevas (con OS X
xargs
) o comillas, barras diagonales inversas o líneas nuevas (con GNUxargs
):fuente
Por un tiempo específico intente lo siguiente:
fuente