Jawaban:
Sederhana untuk loop dengan sedikit sed
akan melakukan trik:
% 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
Regex pengganti di sed
mengatakan untuk mencocokkan lima karakter ( .
berarti karakter apa saja) di awal string ( ^
) dan menghapusnya.
Bash memiliki beberapa kemungkinan scripting yang luar biasa. Ini salah satu caranya:
for file in ??????*; do mv $file `echo $file | cut -c6-`; done
Cara praktis untuk menguji apa yang akan dilakukan adalah menambahkan gema di depan perintah:
for file in ??????*; do echo mv $file `echo $file | cut -c6-`; done
Enam tanda tanya memastikan bahwa Anda hanya mencoba melakukan ini untuk nama file yang lebih panjang dari 5 karakter.