mv
È una riga di comando di base progettata per fare una cosa e farlo bene (filosofia Unix): spostare file (s) o directory (s) .
Puoi hackerare STDOUT
& STDIN
¹ per modificare al volo la stringa di destinazione, ma non è solo un trucco intelligente
rinomina (quella di Perl)
Esistono altri strumenti con lo stesso nome che possono o meno essere in grado di farlo, quindi fai attenzione.
Quando le persone parlano rename
, pensiamo a questo, non a ELF
quello, meno potente (magia?).
Non è semplice, è Perl. Puoi passare alcune funzioni di Perl all'interno ed è estremamente potente.
Considera questo esempio:
Vuoi rinominare un mucchio di file come
foobar_1.txt
foobar_2.txt
foobar_3.txt
Puoi anteporre zeri alle cifre in sprintf()
questo modo (usando regex, heh, è Perl: D):
rename 's/(\d+)/sprintf("%04d", $1)/e' foobar_*.txt
Ora hai:
foobar_0001.txt
foobar_0002.txt
foobar_0003.txt
Non è davvero un comando di base, vero?
rinominare non è progettato per spostare dir (s) , ma può farlo:
$ mkdir -p /tmp/foo/bar/base
$ touch /tmp/foo/bar/base/file
$ rename 's!/tmp/foo/bar/base/file!/tmp/file!' /tmp/foo/bar/base/file
Il file spostato
/tmp/file
¹ del codice che vediamo sui *.stackexchange.*
siti Web
for FILE in `ls *.txt`
do
mv ${FILE} `echo ${FILE} | sed 's/anything_ugly/anything_still_ugly/'`
done
Non è la strada da percorrere , è semplicemente buggy, solo per spiegare perché usare lo strumento giusto al momento giusto
type -a rename
erename --version
?