Risposte:
Un semplice ciclo per un po ' sed
farà 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 di corrispondere a qualsiasi cinque caratteri ( .
significa qualsiasi carattere) all'inizio della stringa ( ^
) e rimuoverlo.
Bash ha alcune incredibili possibilità di scripting. Ecco un modo:
for file in ??????*; do mv $file `echo $file | cut -c6-`; done
Un modo pratico per testare cosa farebbe è aggiungere un eco davanti al comando:
for file in ??????*; do echo mv $file `echo $file | cut -c6-`; done
I sei punti interrogativi ti assicurano di provare solo a nomi di file più lunghi di 5 caratteri.