Tengo varias carpetas y cada una tiene alrededor de 175 archivos. los nombres de los archivos son como
1.wav
2.wav
3.wav
......
175.wav
tengo que cambiarles el nombre como
A1.wav
A2.wav
A3.wav
......
A175.wav
En otras palabras, tengo que agregar letras en los nombres de archivos anteriores.
Me pregunto si hay una manera fácil de hacer esto.
La versión de Ubuntu es 16.10
Respuesta1
Hay muchas maneras, mi elección sería un bucle 'for':
for f in *.wav ; do mv "$f" "A$f" ; done
Esto es simple y se modifica fácilmente para otras necesidades...
Respuesta2
Comando de usuario prename
:
$ prename -nv 's/^(.*)$/A$1/' *.wav
1.wav renamed as A1.wav
2.wav renamed as A2.wav
3.wav renamed as A3.wav
La forma en que esto se lee es simple:
*.wav
permite que el shell expanda el comodín para enumerar todos los archivos que terminan en.wav
. Cuando el shell ejecuta el comando completo, la computadora veráprename -nv 's/^(.*)$/A$1/' 1.wav 2.wav 3.wav
y así sucesivamente como el comando real.- En realidad, is
's/^(.*)$/A$1/'
ess/PATTERN/REPLACEMENT
una expresión regular con agrupación(.*)
, que nos permite agrupar el nombre completo del archivo de principio^
a fin$
y referirnos a él como$1
.
Tenga en cuenta que -nv
los interruptores son para verbose -v
y dry-run -n
. Si está satisfecho con la ejecución de prueba, elimínela -n
para aplicar el cambio de nombre real.
Respuesta3
Usando rename
:
rename 's/([0-9]+).wav/A\1.wav/' *.wav
s/SEARCH-FOR/REPLACE-WITH/ within-this-files
([0-9]+)
contiene la sección numérica y luego podemos usarla nuevamente usando\1
.A\1.wav
:A
+ (sección numérica) +.wav