mv
Ini adalah baris perintah dasar yang dirancang untuk melakukan satu hal dan melakukannya dengan baik (filsafat Unix): memindahkan file atau direktur .
Anda dapat meretas STDOUT
& STDIN
¹ untuk memodifikasi dengan cepat string tujuan, tetapi itu bukan peretasan yang cerdas
rename (salah satu Perl)
Ada alat lain dengan nama yang sama yang mungkin atau mungkin tidak dapat melakukan ini, jadi berhati-hatilah.
Ketika orang berbicara tentang rename
, kita berpikir tentang yang ini, bukan yang ELF
, kurang kuat (sihir?).
Ini tidak mendasar, ini Perl. Anda dapat melewati beberapa fungsi Perl di dalam, dan ini sangat kuat.
Pertimbangkan contoh ini:
Anda ingin mengubah nama banyak file
foobar_1.txt
foobar_2.txt
foobar_3.txt
Anda dapat menambahkan nol ke digit dengan sprintf()
seperti ini (menggunakan regex, heh, ini Perl: D):
rename 's/(\d+)/sprintf("%04d", $1)/e' foobar_*.txt
Sekarang kamu punya :
foobar_0001.txt
foobar_0002.txt
foobar_0003.txt
Bukan perintah dasar, bukan?
rename sebenarnya tidak dirancang untuk memindahkan dir , tetapi ia dapat melakukannya:
$ 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
File yang dipindahkan
/tmp/file
¹ beberapa kode yang kita lihat di *.stackexchange.*
situs web
for FILE in `ls *.txt`
do
mv ${FILE} `echo ${FILE} | sed 's/anything_ugly/anything_still_ugly/'`
done
Ini bukan cara untuk pergi , itu kereta biasa, hanya untuk menjelaskan mengapa menggunakan alat yang tepat pada saat yang tepat
type -a rename
danrename --version
?