rename
è pericolosa, poiché secondo la sua pagina di manuale:
rinomina rinominerà i file specificati sostituendo il primo occorrenza di ...
Sarà felicemente fare la cosa sbagliata con nomi file come c.txt.parser.y
.
Ecco una soluzione che utilizza find
e bash
:
find -type f -name '*.txt' | while read f; do mv "$f" "${f%.txt}"; done
Tenete a mente che questo si romperà se il nome del file contiene un ritorno a capo (raro, ma non impossibile).
Se avete GNU trovare, questa è una soluzione più solida:
find -type f -name '*.txt' -print0 | while read -d $'\0' f; do mv "$f" "${f%.txt}"; done
È vero per quanto riguarda la versione 'util-linux-ng' di' rename', ma la versione dello script Perl può 'rinominare'/.txt $ // '* .txt' –
per me rinominare' s/.txt $ // '* .txt non ha funzionato – rp101
se ti manca la corrente "." per quanto riguarda la posizione in cui si desidera eseguire. Forse questa è la mia variante osx di find, o il mio percorso non è impostato correttamente – bgs