Cambiar el nombre de los archivos por lotes en Linux y macOS

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.

mvOrden

mvEl 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.

renameOrden

renameEl comando
rename arg1 arg2 arg3
renamees 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 con charun ú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 con fooa. Si un archivo es foobcc.txt, no coincidirá .

Ejemplo

Por ejemplo, /homehay 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í .txtse compararán todos los archivos con sufijo.

Si se cambia rename "a" "xxx" ?.txta, solo coincidirá con un archivo, es decir , luego reemplace los caracteres a.txten el archivo coincidente con . Tenga en cuenta que al probar , solo se reemplazará el primero , lo cual debe comprenderse más adelante.axxxabab.txta

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 .

renameUso 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 perlexpresió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.txtxxxddbb.txt

abbcc.txtAú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.txtddbb.txt

en MacOSrename

Primero, brew install renameuse el renamecomando de instalación y el resto del uso es el mismo que en Ubuntu.

Supongo que te gusta

Origin blog.csdn.net/mifangdebaise/article/details/128177752
Recomendado
Clasificación