Cómo cambiar el nombre de los archivos en un directorio como el siguiente archivo: PMC21375.pdf.txtnecesito que me cambien el nombre 21375.txt. es decir, necesito eliminar ambos PMCy pdfde 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 shellaviso 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) Debiany derivado como Ubuntu:
$ sudo update-alternatives --set rename /path/to/rename
(reemplazar /path/to/renamea la ruta de su perl's renamecomando.
Por último, pero no menos importante, esta herramienta fue originalmente escrita por Larry Wall, el padre de Perl.
.pdfnombre 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
.pdfdel 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*txtlimitar el reemplazo a archivos de texto.renameya 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 deperlcon sintaxis diferente. A la que te refieres se parece a lautil-linuxque a veces se llamarename.ulpara no confundirse con larenamedeperl, mientras que en algunos otros sistemas,renamees la de util-linux yperlse llama la de fromprename.rename 's/PMC// *.txtyrename s/\.pdf// *.txtPrimero 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
.pdfy nuevamente:quitar
PMC.fuente
Prueba esto:
for i in *.pdf.txt; do j=${i//\.pdf/}; j=${j//PMC/}; mv $i $j; doneLos
j=${i//\.pdf/}medios para sustituir.pdfen$inada. Del mismo modo, con la segunda asignación j deshacerse del PMC.fuente
Si está usando
zsh, ese es un trabajo típico parazmv:(
zmvmaneja conflictos potenciales con gracia).fuente