Enseñarle tres formas de cambiar rápidamente el nombre de los archivos por lotes

En nuestra vida laboral, ya sean programadores o no programadores, encontraremos un requisito, es decir, cambiar el nombre de un montón de archivos. Hay muchos programas excelentes en Windows que pueden ayudarnos a cumplir con este requisito, y en el entorno Linux, simplemente podemos escribir un código para completar este requisito.

En este artículo, Liang Xu presentará los tres métodos de cambio de nombre de archivos más básicos, porque es relativamente básico, por lo que los controladores antiguos pueden detenerse aquí.

1. comando de cambio de nombre

Como su nombre lo indica, el comando de cambio de nombre se utiliza para cambiar el nombre del archivo. El comando de cambio de nombre tiene una función muy poderosa y podemos usarlo para modificar varios nombres de archivos complejos. Sin embargo, este artículo solo presenta sus funciones más básicas y el cambio de nombre de otras potentes funciones de cambio de nombre se actualizará más adelante. El formato más básico de cambio de nombre es el siguiente:

rename 源字符串 目标字符串 文件

Entre ellos, la cadena de origen representa la cadena por la que se debe reemplazar el nombre del archivo original, que puede ser todo o parte del nombre del archivo original; la cadena de destino es la cadena con la que se reemplazará; el archivo es una lista de archivos cuyo nombre de archivo debe cambiarse, que puede ser uno o más Uno.

Si el directorio es ahora una pila de atb_mod_01.cpp,atb_mod_02.cpp,atb_mod_03.cpp,atb_mod_04.cppdocumentos y otras formas de nuestras necesidades se modcambia el nombre del archivo adb, entonces el comando para completar este requisito de la siguiente manera:

[alvin@VM_0_16_centos exp3]$ ls
atb_mod_01.cpp  atb_mod_02.cpp  atb_mod_03.cpp  atb_mod_04.cpp
[alvin@VM_0_16_centos exp3]$ rename mod adb *
[alvin@VM_0_16_centos exp3]$ ls
atb_adb_01.cpp  atb_adb_02.cpp  atb_adb_03.cpp  atb_adb_04.cpp

2. comando mv con bucle for

Si ahora tenemos un montón de .txtarchivos, queremos cambiar su sufijo .cpp. Primero mira el código completo:

#!/bin/bash

for name in `ls *.txt`
do
    mv $name ${name%.txt}.cpp
done

Todos sabemos que el comando mv se usa para cambiar el nombre en Linux, por lo que el cambio de nombre por lotes pensará naturalmente en anidar comandos mv con declaraciones de bucle.

Aquí, usamos ls *.txttodos los archivos txt en el directorio actual para enumerarlos todos, uno por uno y luego pasar a la operación de ciclo de variable de nombre.

En el cuerpo del bucle, usamos el comando mv para cambiar el nombre. Aquí usamos ${name%.txt}esta cadena de enfoque que indica el comienzo de la cola eliminada del nombre con .txtla coincidencia parcial más pequeña y devuelve la parte restante. Después de eso, junto con el .cppsufijo. Mediante esta operación, podemos cambiar el sufijo del nombre del archivo de .txt a .cpp. Finalmente, usamos el comando mv para cambiar realmente el nombre del archivo.

3. comando sed con bucle for

Si ahora tenemos un montón de archivos, el formato del nombre del archivo test01.txt,test02.txt,test03.txt,test04.txtes la primera parte en inglés, la segunda mitad es digital. Ahora queremos cambiar el nombre del archivo a test-01.txteste formulario. Esta vez, usamos el comando sed para completar este requisito.

Primero echemos un vistazo al código completo.

#!/bin/bash

for file in `ls *.txt`
do
     newFile=`echo $file | sed 's/\([a-z]\+\)\([0-9]\+\)/\1-\2/'`
     mv $file $newFile
done

Como antes de usar ls \*.txtpara obtener todos los .txtarchivos. Luego use el comando echo para generarlos secuencialmente como la entrada del comando sed.

A continuación, se llega a la parte clave. A primera vista, el comando de sed puede parecer un poco aterrador, pero el controlador anterior se ha acostumbrado a él. El contenido de las comillas invertidas es en realidad esta estructura básica:

s/ 原字符串 / 替代的字符串 /

Aquí usamos el paquete coincidente, es decir, las expresiones de cadena originales entre paréntesis se agrupan de acuerdo con un cierto tiempo, y luego vuelven \1,\2,\3……al frente del paquete de referencia, por lo que en la cadena alternativa se juntan en el formato apropiado.

Qian Wenyi dijo que el nombre del archivo original es parte en inglés y el número de parte antes después de constituido, el inglés se puede [a-z]+expresar con números que se pueden [0-9]+representar. Tenga cuidado de no olvidar el signo más, que significa varias repeticiones de los caracteres anteriores. Luego, usamos \ 1 y \ 2 para citar las partes correspondientes al frente, y luego las conectamos con barras transversales, por lo que es así:

s/([a-z]+)([0-9]+)/\1-\2/

Debido a que los corchetes y el signo más pueden tener diferentes significados en diferentes Shells, se debe agregar un carácter de escape antes, para que se convierta en lo que vio antes.

Después de eso, use el comando mv para completar la acción de cambio de nombre.

Finalmente, recientemente, muchos amigos me pidieron la hoja de ruta de aprendizaje de Linux , así que, según mi experiencia, pasé un mes quedándome despierto hasta tarde en mi tiempo libre y compilé un libro electrónico. Ya sea que esté en una entrevista o en la superación personal, ¡creo que le ayudará! El directorio es el siguiente:

Dáselo a todo el mundo de forma gratuita, ¡solo pídeme que me levantes el pulgar!

Libro electrónico | Hoja de ruta de aprendizaje sobre desarrollo de Linux

¡También espero que algunos amigos se unan a mí para hacer que este libro electrónico sea más perfecto!

¿Ganancia? Espero que los hierros viejos tengan una combinación de tres golpes para que más personas puedan leer este artículo.

Lectura recomendada:

Supongo que te gusta

Origin blog.csdn.net/yychuyu/article/details/108520953
Recomendado
Clasificación