Come rinominare più file eliminando i caratteri in bash?

Devo rinominare più file nella directory eliminando i primi 5 caratteri per each nome di file.
Come posso fare questo i bash / shell? Sto usando Ubuntu 11.10. Grazie.

  • Determinare se il filesystem o la partizione sono installati RO o RW tramite Bash Script?
  • Posto standard per gli script di bash_completion.d definiti dall'utente?
  • variabile di ambiente di file di configuration ssh?
  • Avviare la schermata Unix, il command Esegui, Detach
  • BSD - Rimuovere i caratteri non ascii da tutti i file in una directory in modo ricorsivo
  • Controllare se l'arrays è vuoto in Bash
  • 5 Solutions collect form web for “Come rinominare più file eliminando i caratteri in bash?”

    Un semplice per loop con un po 'di sed sarà il trucco:

     % touch xxxxx{foo,bar,baz} % ls -l xxxxx{foo,bar,baz} -rw-r--r-- 1 jamesog wheel 0 29 Dec 18:07 xxxxxbar -rw-r--r-- 1 jamesog wheel 0 29 Dec 18:07 xxxxxbaz -rw-r--r-- 1 jamesog wheel 0 29 Dec 18:07 xxxxxfoo % for file in xxxxx*; do mv $file $(echo $file | sed -e 's/^.....//'); done % ls -l foo bar baz -rw-r--r-- 1 jamesog wheel 0 29 Dec 18:07 bar -rw-r--r-- 1 jamesog wheel 0 29 Dec 18:07 baz -rw-r--r-- 1 jamesog wheel 0 29 Dec 18:07 foo 

    Il regex sostitutivo in sed dice che corrisponde a quei cinque caratteri (si intende qualsiasi carattere) all'inizio della string ( ^ ) e lo rimuove.

    Bash ha alcune straordinarie possibilità di scripting. Ecco un modo:

     for file in ??????*; do mv $file `echo $file | cut -c6-`; done 

    Un modo pratico per verificare che cosa farebbe è aggiungere un eco davanti al command:

     for file in ??????*; do echo mv $file `echo $file | cut -c6-`; done 

    I sei punti interrogativi assicurano che si tenta di farlo solo ai nomi di file più lunghi di 5 caratteri.

    Tutte le grandi risposte, grazie. Questo è ciò che ha funzionato nel mio caso:

     rename 's/^.......//g' * 

    È ansible utilizzare sed per farlo

     for file in * ; do mv $file $(echo $file |sed 's/^.\{5\}//g'); done 

    I miei due centesimi:

     for file in *; do mv $file ${file:5}; done 

    ${file:n} rimuove i primi n caratteri nel file string.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.