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 tar
aceptará un sed --transform=EXPRESSION
cambio 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 tar
procesos, y que no se alterará independientemente de su recuento de archivos.
tar | tar
tar
está 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 tar
procesos aquí. El más importante se enumera aquí primero:
-
stdout / stdin : esto informa tar
que transmitirá su entrada o salida hacia o desde la stdin/stdout
cual interpretará correctamente dependiendo de si está construyendo o extrayendo un archivo.
-c
crear : esto le dice tar
a construir el archivo. El siguiente argumento tar
espera es ...
-f
archivo : especificamos que tar
funcionará con un file
objeto 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
...
-C
cambiar directorio : esto informa tar
que necesita cambiar al directorio que especifico antes de realizar cualquier otra acción, de manera efectiva justo cd ../test2
antes 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 sed
expresión o //flag
.
-x
extraer : después de los tar
cambios 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 - |pipe
archivo de almacenamiento. No hay misterio
mc
administrador de archivos venerable tiene un soporte más extenso para este tipo de cambios de nombre masivos.