tar Hará esto por usted realmente rápido.
PRUEBA
Primero creé 2 directorios y 10 archivos:
% mkdir test1 test2 ; cd test1
% for n in `seq 1 10` ; do touch ABC.file$n ; done
% ls
> ABC.file1 ABC.file2 ABC.file4 ABC.file6 ABC.file8
> ABC.file10 ABC.file3 ABC.file5 ABC.file7 ABC.file9
Luego los copié:
% tar -cf - ./* |\
tar -C../test2 --transform='s/ABC/DEF/' -xf -
% ls ../test2
> DEF.file1 DEF.file2 DEF.file4 DEF.file6 DEF.file8
> DEF.file10 DEF.file3 DEF.file5 DEF.file7 DEF.file9
TRANSFORMAR
Entonces GNU taraceptará un sed --transform=EXPRESSIONcambio de nombre de archivo. Esto incluso puede renombrar solo algunos de los archivos. Por ejemplo:
% tar -cf - ./* |\
tar -C../test2 --transform='s/ABC\(.*[0-5]\)/DEF\1/' -xf -
% ls ../test2
> ABC.file6 ABC.file8 DEF.file1 DEF.file2 DEF.file4
> ABC.file7 ABC.file9 DEF.file10 DEF.file3 DEF.file5
Entonces esa es una ventaja.
CORRIENTE
También considere que esto es solo dos tarprocesos, y que no se alterará independientemente de su recuento de archivos.
tar | tar
tarestá tan optimizado como podría desear que sea. Esto nunca tendrá problemas de conteo de argumentos o procesos secundarios fuera de control. Esto es solo A> B hecho.
ARGUMENTOS
Utilizo 7 argumentos distintos combinados entre mis dos tarprocesos aquí. El más importante se enumera aquí primero:
-stdout / stdin : esto informa tarque transmitirá su entrada o salida hacia o desde la stdin/stdoutcual interpretará correctamente dependiendo de si está construyendo o extrayendo un archivo.
-ccrear : esto le dice tara construir el archivo. El siguiente argumento tarespera es ...
-farchivo : especificamos que tarfuncionará con un fileobjeto en lugar de un dispositivo de cinta o lo que sea. Y el archivo con el que estará trabajando, como se señaló anteriormente, es stdin/stdout, en otras palabras, nuestro |pipe.
./*todos $ PWD / archivos : no hay mucho que explicar aquí, excepto que el argumento del archivo es lo primero, y -luego ./*.
... y al otro lado del |pipe...
-Ccambiar directorio : esto informa tarque necesita cambiar al directorio que especifico antes de realizar cualquier otra acción, de manera efectiva justo cd ../test2antes de la extracción.
--transform='s/ed/EXPR/'- Como ya se mencionó, esto hizo el cambio de nombre. Pero los documentos indican que puede tomar cualquier sedexpresión o //flag.
-xextraer : después de los tarcambios en nuestro directorio de destino y recibir nuestras instrucciones de cambio de nombre, le indicamos que comience a extraer todos los archivos en su directorio actual del -f - |pipearchivo de almacenamiento. No hay misterio
mcadministrador de archivos venerable tiene un soporte más extenso para este tipo de cambios de nombre masivos.