En su caso específico, puede usar el siguiente bash
comando ( bash
es el shell predeterminado en macOS):
for f in *.png; do echo mv "$f" "${f/_*_/_}"; done
Nota: Si existe la posibilidad de que sus nombres de archivo comiencen con -
, coloque --
antes de ellos [1]:
mv -- "$f" "${f/_*_/_}"
Nota: echo
se antepone a mv
para realizar un ensayo. Elimínelo para realizar un cambio de nombre real.
Puede ejecutarlo desde la línea de comandos o usarlo en un script.
"${f/_*_/_}"
es una aplicación de bash
expansión de parámetros : el (primer) patrón de coincidencia de subcadenas _*_
se reemplaza con literal _
, cortando efectivamente el token del medio del nombre.
- Tenga en cuenta que
_*_
es un patrón (una expresión comodín, como también se usa para globbing), no una expresión regular (para aprender sobre patrones, ejecutar man bash
y buscar Pattern Matching
).
Si tiene que cambiar el nombre de los archivos por lotes con frecuencia, considere instalar una herramienta especializada como la rename
utilidad basada en Perl . En macOS, puede instalarlo utilizando el popular administrador de paquetes Homebrew de la siguiente manera:
brew install rename
Aquí está el equivalente del comando en la parte superior usando rename
:
rename -n -e 's/_.*_/_/' *.png
Nuevamente, este comando realiza una ejecución en seco; eliminar -n
para realizar el cambio de nombre real.
- De forma similar a la
bash
solución, s/.../.../
realiza la sustitución de texto, pero, a diferencia de lo que bash
ocurre con las expresiones regulares verdaderas, se utilizan.
[1] El propósito de argumento especial --
, que está soportado por la mayoría de los servicios públicos, es de señalar que los argumentos posteriores deben ser tratados como los operandos (valores), incluso si se ven como opciones debido a que empiecen con -
, como Jacob C. notas.