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.

  • Ubuntu dpkg, installazione non intertriggers
  • Perché alcune caselle CentOS 5 sono ancora vulnerabili a ShellShock dopo l'aggiornamento di Bash?
  • Cosa potrebbe rendere `>` silenziosamente fallito in Linux?
  • bash bloccato a 3.2-24.el5 (Redhat)
  • Come passare la password al command scp utilizzato nello script bash?
  • controlla uno script bash con variables da un file esterno
  • 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.