Cómo cambiar el nombre de los archivos en un directorio como el siguiente archivo: PMC21375.pdf.txt
necesito que me cambien el nombre 21375.txt
. es decir, necesito eliminar ambos PMC
y pdf
de cada nombre de archivo.
10
rename 's/(PMC|\.pdf)//g' *pdf.txt
Demo:
$ ls *txt
PMC21375.pdf.txt
$ rename -n 's/(PMC|\.pdf)//g' *txt
PMC21375.pdf.txt -> 21375.txt
del shell
aviso Es muy útil, puedes poner un código perl como lo hago yo en una sustitución.
Puede quitar el -n
(interruptor de modo de funcionamiento en seco) cuando sus pruebas se vuelvan válidas.
Hay otras herramientas con el mismo nombre que pueden o no ser capaces de hacer esto, así que tenga cuidado.
Si ejecuta el siguiente comando ( linux
)
$ file $(readlink -f $(type -p rename))
y tienes un resultado como
.../rename: Perl script, ASCII text executable
entonces esta parece ser la herramienta correcta =)
Si no, para que sea el valor predeterminado (generalmente ya es el caso) Debian
y derivado como Ubuntu
:
$ sudo update-alternatives --set rename /path/to/rename
(reemplazar /path/to/rename
a la ruta de su perl's rename
comando.
Por último, pero no menos importante, esta herramienta fue originalmente escrita por Larry Wall, el padre de Perl.
.pdf
nombre del archivo.Además del comando renombrar, puede hacerlo directamente en bash (solo una forma de muchas):
Editado para mostrar a Pinyaka cómo funciona:
fuente
.pdf
del nombre del archivo.Hay varias utilidades para renombrar archivos, pero una de las más fáciles de usar es
rename
. En su caso, probablemente pueda hacer:El primer parámetro es la parte del nombre del archivo a reemplazar. El segundo parámetro es la cadena de reemplazo. Aquí estoy usando
''
para representar la cadena vacía. Todos los siguientes parámetros son archivos para renombrar, aquí solía*txt
limitar el reemplazo a archivos de texto.rename
ya debería estar presente si está ejecutando Linux. Si está ejecutando un * BSD o OS X, es posible que deba instalarlo primero.fuente
rename
. Hay uno deutil-linux
, y uno deperl
con sintaxis diferente. A la que te refieres se parece a lautil-linux
que a veces se llamarename.ul
para no confundirse con larename
deperl
, mientras que en algunos otros sistemas,rename
es la de util-linux yperl
se llama la de fromprename
.rename 's/PMC// *.txt
yrename s/\.pdf// *.txt
Primero haga una copia de seguridad de sus archivos! Entonces, básicamente, puede usar una línea única de Python en el directorio actual con la forma general:
en su caso específico, puede usar esto dos veces:
quitar
.pdf
y nuevamente:quitar
PMC
.fuente
Prueba esto:
for i in *.pdf.txt; do j=${i//\.pdf/}; j=${j//PMC/}; mv $i $j; done
Los
j=${i//\.pdf/}
medios para sustituir.pdf
en$i
nada. Del mismo modo, con la segunda asignación j deshacerse del PMC.fuente
Si está usando
zsh
, ese es un trabajo típico parazmv
:(
zmv
maneja conflictos potenciales con gracia).fuente