Una soluzione usando find
:
Per rinominare solo file :
find /your/target/path/ -type f -exec rename 's/special/regular/' '{}' \;
Per rinominare solo directory :
find /your/target/path/ -type d -execdir rename 's/special/regular/' '{}' \+
Per rinominare sia i file che le directory :
find /your/target/path/ -execdir rename 's/special/regular/' '{}' \+
Se non ti dispiace installare un altro strumento, puoi usare rnm:
rnm -rs '/special/regular/g' -dp -1 *
Passerà attraverso tutte le directory/sottodirectory (a causa di -dp -1
) e sostituisci speciale con normale nei loro nomi.
La risposta di @speakr è stata l'indizio per me.
Se usi -execdir per trasformare sia i file che le directory, ti consigliamo di rimuovere anche -type f
dall'esempio mostrato. Per precisarlo, usa:
find /your/target/path/ -execdir rename 's/special/regular/' '{}' \+
Considera anche l'aggiunta di g
flag (globale) alla regex se vuoi sostituire tutto occorrenze di special
con regular
in un dato nome file e non solo alla prima occorrenza. Ad esempio:
find /your/target/path/ -execdir rename 's/special/regular/g' '{}' \+
trasformerà special-special.jpg
a regular-regular.jpg
. Senza il flag globale, ti ritroverai con regular-special.jpg
.
Cordiali saluti:GNU Rename non è installato per impostazione predefinita su Mac OSX. Se stai usando il gestore di pacchetti Homebrew, brew install rename
rimedierà a questo.
Prova a farlo (richiedi bash --version
>=4):
shopt -s globstar
rename -n 's/special/regular/' **
Rimuovi il -n
cambia quando i tuoi test sono OK
Esistono altri strumenti con lo stesso nome che possono o meno essere in grado di farlo, quindi stai attento.
Se esegui il seguente comando (GNU
)
$ file "$(readlink -f "$(type -p rename)")"
e ottieni un risultato come
.../rename: Perl script, ASCII text executable
e non contenente:
ELF
allora questo sembra essere lo strumento giusto =)
In caso contrario, per renderlo predefinito (di solito è già così) su Debian
e derivati come Ubuntu
:
$ sudo update-alternatives --set rename /path/to/rename
(sostituisci /path/to/rename
al percorso del tuo perl's rename
comando.
Se non hai questo comando, cerca nel tuo gestore di pacchetti per installarlo o fallo manualmente
Ultimo ma non meno importante, questo strumento è stato originariamente scritto da Larry Wall, il padre di Perl.