Como seguimiento a mi pregunta anterior , si tengo varios archivos del formulario
sw.ras.001
sw.ras.002
sw.ras.003
…
¿Qué comando puedo usar para eliminar el ras.
en medio de todos los archivos?
Como seguimiento a mi pregunta anterior , si tengo varios archivos del formulario
sw.ras.001
sw.ras.002
sw.ras.003
…
¿Qué comando puedo usar para eliminar el ras.
en medio de todos los archivos?
ras
, es decir, terminar consw..001
, o elras.
, dejandosw.001
?\.
en los patrones.Respuestas:
Puede hacer esto con una modificación bastante pequeña de cualquiera de las respuestas de la última pregunta:
o
Explicación:
rename
es unperl
script que toma unaperl
expresión regular y una lista de archivos, aplica la expresión regular al nombre de cada archivo a su vez y cambia el nombre de cada archivo al resultado de aplicar la expresión regular. En nuestro caso,ras
coincide literalmente y\.
coincide con un literal.
(ya que.
solo indica cualquier carácter que no sea una nueva línea), y lo reemplaza con nada.El
for
bucle toma todos los archivos que comienzan consw.ras.
(shell glob estándar) y los repite.${var/search/replace}
búsquedas$var
parasearch
y reemplaza la primera ocurrencia conreplace
, por lo que${file/ras./}
regresa$file
con el primerras.
eliminado. El comando cambia el nombre del archivo al mismo nombre menosras.
. Tenga en cuenta que con esta búsqueda y reemplazo,.
se toma literalmente, no como un carácter especial.fuente
Otra opción es usar mmv (Mass MoVe y renombrar):
No olvides usar las comillas simples alrededor de tus patrones, de lo contrario las estrellas se expandirán a nivel de caparazón.
La utilidad no siempre está disponible, pero si no lo está, puede instalarla con:
Vea la página de aquí .
fuente
En cualquier shell POSIX-compatible (
bash
,dash
,ksh
, etc):O con
rename
:fuente
Recientemente tuve que hacer un cambio de nombre masivo de una serie de archivos donde tuve que reemplazar la última aparición de un personaje donde el personaje ocurrió varias veces en los nombres de archivo. En este caso particular, tuve que reemplazar el último guión
-
con un guión bajo_
, convirtiendo esto:dentro de esto:
Tomó algo de tiempo, pero finalmente lo logró:
Aquí:
${i%-*}
coincide con el comienzo del nombre del archivo hasta la última aparición del guión-
${file##*-}
coincide con el resto del nombre de archivo después de la última aparición del guión-
fuente