Referencia: Cambio de nombre de archivos en Linux, encuentro el problema de "palabra simple no permitida"
Dos formas de cambiar el nombre en Linux
Hay dos comandos para cambiar el nombre de archivos en Linux: mv
, rename
.
mv
Orden
mv
El comando
mv /dir/file1 /dir2/file1
tiene dos parámetros, el primero es el archivo de origen y el segundo es el destino. Si el nombre del archivo del segundo parámetro es diferente, se le cambiará el nombre. Cuando los dos parámetros no incluyen un directorio, solo el nombre del archivo, eso es un cambio de nombre Este es un cambio de nombre de un solo archivo.
rename
Orden
rename
El comando
rename arg1 arg2 arg3
rename
es el verdadero comando de cambio de nombre por lotes y tiene 3 parámetros, no 2.
arg1
: Cadena antigua
arg2
: Cadena nueva
arg3
: Para hacer coincidir los archivos a cambiar de nombre, puede utilizar 3 comodines, *
, ?
, [char]
.
*
Indica cualquier número de caracteres,
?
representa un solo carácter,
[char]
coincide conchar
un único carácter exacto personalizado y puede completar cualquier carácter.
Por ejemplo,foo[a]*
significa que solo coincidirán los nombres de archivos que comiencen confooa
. Si un archivo esfoobcc.txt
, no coincidirá .
Ejemplo
Por ejemplo, /home
hay dos archivos debajo abbcc.txt
, addbb.txt
,a.txt
Quiero a
reemplazar con xxx
, el comando es así:rename "a" "xxx" *.txt
Luego, primero coincidirá con los archivos que deben modificarse, aquí .txt
se compararán todos los archivos con sufijo.
Si se cambia rename "a" "xxx" ?.txt
a, solo coincidirá con un archivo, es decir , luego reemplace los caracteres a.txt
en el archivo coincidente con . Tenga en cuenta que al probar , solo se reemplazará el primero , lo cual debe comprenderse más adelante.a
xxx
abab.txt
a
Vale la pena señalar que este comando es diferente en diferentes versiones de Linux y los sistemas operativos de la serie Debian tienen un uso diferente .
rename
Uso de sistemas operativos de la serie Debian
Para los sistemas operativos de la serie Debian, como Ubuntu, es incorrecto usar este comando de esta manera y se informará un error, como
La palabra simple "a" no está permitida mientras se usan "subscriptores estrictos" en (eval 1) línea 1.
Después de buscar, encontré esta declaración:
En las distribuciones basadas en Debian, se necesita una expresión Perl y una lista de archivos. necesitas necesitarías usar:
rename 's/foo/foox/' *
Aquí hay una perl
expresión. Para que sea fácil de entender, significa que los dos primeros parámetros se combinan en 1, por lo que solo se necesitan 2 parámetros en lugar de los 3 parámetros mencionados anteriormente.
Ejemplo
Si mi nombre de archivo actual es abbcc.txt
, ac.txt
,addbb.txt
Entonces, al ejecutar el ejemplo de cambio de nombre anterior en Ubuntu, el comando es el siguiente:
rename 's/a/xxx/' *.txt
el resultado es
xxxbbcc.txt
,,xxxc.txt
xxxddbb.txt
abbcc.txt
Aún así , estos tres archivos ac.txt
, addbb.txt
si desea eliminar letras a
, entonces el comando es rename 's/a//' *.txt
(es decir, simplemente elimine el comando anterior ) xxx
,
y el resultado es
bbcc.txt
,c.txt
ddbb.txt
en MacOSrename
Primero, brew install rename
use el rename
comando de instalación y el resto del uso es el mismo que en Ubuntu.