Come posso rinominare molti file usando un regex?


20

Voglio rinominare molti file su Mac OS X (10.7.2) .. Non ho il pacchetto perl per il renamecomando.

I miei file hanno nomi come "T452-102456-0.png" e voglio eliminare la parte "-0". So di poter fare questa azione scrivendo il mio script php-cli, ma vorrei sapere una soluzione più semplice e veloce.


Non esiste una contraddizione logica tra "molti file pdf" e "I miei file hanno nomi come" T452-102456-0.png ""?
arte

Oh ... il tipo di file non ha importanza, ma è vero ^^. Modifico, grazie per il tuo commento =)
Raphaël

Risposte:


21

Bash o Ksh insieme mvpotrebbero risolverlo:

for f in *.png; do mv -n "$f" "${f/-0}"; done

Nel caso in cui il nome del file possa avere “0” anche dopo il primo trattino e “-0” sia sempre davanti al punto, potresti voler includere anche quel punto nell'espressione:

for f in *.png; do mv -n "$f" "${f/-0./.}"; done

Ma poiché quella regola di ridenominazione è semplice, se hai renamedal pacchetto util-linux , lo farà anche:

rename '-0.' '.' *.png

funziona perfettamente. Grazie mille =)
Raphaël

3

Metodo semplice: file solo nella directory corrente

Con zsh:

autoload zmv
zmv '(*)-0(.png)' '$1$2'

Con altre conchiglie:

for x in *-0.png; do mv -- "$x" "${x%-0.*}.png"; done


Metodo avanzato: file nella directory corrente e / o nelle sottodirectory

Con zsh:

zmv '(**/)(*)-0(.png)' '$1$2$3'

Con ksh93:

set -o globstar
for x in **/*-0.png; do mv -- "$x" "${x%-0.*}.png"; done

Con bash ≥4, come sopra, ma usare al shopt -s globstarposto del setcomando.

Con altre conchiglie:

find -name '*-0.png' -exec sh -c 'for x; do mv -- "$x" "${x%-0.*}.png"; done' _ {} +

un altro ottimo motivo per installare zsh:) .... zmv
danidee


0

Se hai il mmvpacchetto:

mmv '*-0.png' '#1.png'

Come (versioni recenti di) rename, ci vorrà ragionevole attenzione per evitare di sovrascrivere i file esistenti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.