¿Cómo copiaría (estilo de archivo donde no se cambia la fecha) todos los archivos en un directorio de respaldo al directorio del usuario mientras cambio el nombre de cada archivo para eliminar la porción de cadena aleatoria del nombre (es decir, -2b0fd460_1426b77b1ee_-7b8e)?
cp de:
/backup/path/data/Erp.2014.02.16_16.57.03-2b0fd460_1426b77b1ee_-7b8e.etf
a:
/home/user/data/Erp.2014.02.16_16.57.03.etf
Cada archivo siempre comenzará con "Erp". seguido por la cadena de sello de fecha y hora seguida por la cadena aleatoria y luego la extensión ".etf". Quiero mantener todos los elementos de nombre, incluida la marca de fecha y hora. Solo quiero eliminar la cadena aleatoria.
La cadena aleatoria permite múltiples copias de seguridad del mismo archivo. Sin embargo, en este caso, simplemente ejecuté fdupes y no hay duplicados. Entonces, simplemente puedo restaurar todos los archivos, eliminando la cadena aleatoria.
Estoy buscando un comando bash de una línea para hacerlo.
Si eso no funciona, podría hacerlo en dos o más pasos. Normalmente uso KRename, pero en este caso necesito hacerlo en bash. (Estoy trabajando de forma remota).
pax
. Esto parece una herramienta muy útil. Me hace preguntarme por qué no es estándar en más distribuciones ...pax
ha estado en la base estándar de Linux desde 2005. Además, la alternativa para esto, GNUcpio
, es posiblemente la herramienta GNU menos característica que existe.rename
es diferente en Fedora / Red Hat: no sé cómo usarlo en este caso.Puedes usar el
cp
comando con la-a
opciónY luego use un bucle for para cambiar el nombre de todos los archivos mientras los copia:
Listo. Inicie este comando en el directorio de origen.
Explicación: El
%%-*
cortará todos los caracteres después de la primera aparición de un guión / menos-
y.etf
al final nuevamente agregará la extensión del archivo.Bueno, y como un trazador de líneas, póngalo todo en una línea. :-) Me gusta esto
fuente
%%-*
consejo? Soy curioso.En zsh, use
zmv
. Pon esto en tu.zshrc
:Luego usa
En bash:
Si no tiene zsh, una forma POSIX usa pax (esto copia los directorios de forma recursiva).
Si está en un sistema restringido sin zsh y sin pax, puede usar un bucle:
fuente
cp
No tiene esa capacidad. Recuerdocpio
haber podido hacer eso, pero la página de manual actual dice lo contrario. Sin embargo, (gnu)tar
tiene una--transform
opción:Entonces tendría un cmdline como:
fuente