Yanıtlar:
Biraz döngü ile basit bir sed
hile yapacak:
% 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
Yedek regex içinde sed
herhangi beş karakter (maç için diyor .
dize (başlangıcındaki aracı herhangi bir karakter) ^
) ve çıkarın.
Bash'in şaşırtıcı komut dosyası oluşturma olanakları vardır. İşte bir yol:
for file in ??????*; do mv $file `echo $file | cut -c6-`; done
Ne test etmek kolay bir yolu olurdu yapmak komuta önünde bir yankı eklemektir:
for file in ??????*; do echo mv $file `echo $file | cut -c6-`; done
Altı soru işareti, bunu yalnızca 5 karakterden uzun dosya adlarıyla yapmaya çalışmanızı sağlar.