Cara Menggunakan arahan ganti nama pada Linux
Selesaikan fail yang menamakan semula rumah kuasa dunia Linux dan beri mv
—dan diri anda — rehat. Rename
fleksibel, pantas, dan kadang-kadang lebih mudah. Berikut adalah tutorial untuk sumber kuasa perintah ini.
Apa yang Salah dengan mv?
Tidak ada salahnya mv
. Perintah ini berfungsi dengan baik, dan terdapat di semua pengedaran Linux, di macOS, dan di sistem operasi seperti Unix yang lain. Oleh itu, ia sentiasa ada. Tetapi kadang-kadang anda hanya memerlukan jentolak, bukan sekop.
The mv
arahan mempunyai tujuan dalam hidup, dan itu adalah untuk memindahkan fail. Ini adalah kesan sampingan yang senang bahawa ia dapat digunakan untuk memindahkan fail yang ada ke dalam fail baru, dengan nama baru. Kesan bersih adalah menamakan semula fail, jadi kita mendapat apa yang kita mahukan. Tetapi mv
bukan alat penamaan semula fail khusus.
Menamakan semula Fail Tunggal Dengan mv
Untuk digunakan mv
untuk menamakan semula jenis file mv
, spasi, nama file, spasi, dan nama baru yang ingin Anda miliki. Kemudian tekan Enter.
Anda boleh gunakan ls
untuk memeriksa fail tersebut telah diganti namanya.
mv oldfile.txt newfile.txt
ls * .txt
Menamakan semula Beberapa Fail dengan mv
Perkara menjadi lebih sukar apabila anda mahu menamakan semula banyak fail. mv
tidak mempunyai kemampuan untuk menamakan semula beberapa fail. Anda mesti menggunakan beberapa helah Bash yang bagus. Tidak apa-apa jika anda mengetahui beberapa baris perintah kelas menengah, tetapi kerumitan menamakan semula beberapa fail dengan mv
berdiri bertentangan dengan kemudahan penggunaan mv
untuk menamakan semula satu fail.
Perkara meningkat dengan cepat.
Katakan kita mempunyai direktori dengan pelbagai fail di dalamnya, dengan pelbagai jenis. Sebilangan fail ini mempunyai sambungan ".prog". Kami ingin menamakan semula mereka di baris perintah supaya mereka mempunyai pelanjutan ".prg".
Bagaimana kita mv
berusaha untuk melakukannya? Mari lihat failnya.
ls * .prog -l
Inilah salah satu cara untuk melakukannya yang tidak memerlukan penulisan fail skrip Bash yang sebenarnya.
untuk f in * .prog; lakukan mv - "$ f" "$ {f% .prog} .prg"
Adakah kerja itu? Mari semak fail dan lihat.
ls * .pr *
Jadi, ya, ia berjaya. Mereka semua fail ".prg" sekarang, dan tidak ada fail ".prog" dalam direktori.
Apa Yang Terjadi?
Apa yang sebenarnya dilakukan oleh arahan panjang itu? Mari memecahkannya.
untuk f in * .prog; lakukan mv - "$ f" "$ {f% .prog} .prg"
Bahagian pertama memulakan gelung yang akan memproses setiap fail ".prog" dalam direktori, pada gilirannya.
Bahagian seterusnya mengatakan apa yang akan dilakukan pemprosesan . Ini digunakan mv
untuk memindahkan setiap fail ke fail baru. Fail baru akan diberi nama dengan nama fail asal tidak termasuk bahagian ".prog". Sambungan baru ".prg" akan digunakan sebagai gantinya.
Harus Ada Jalan yang Lebih Mudah
Yang paling pasti. Itu adalah rename
perintah.
rename
bukan sebahagian daripada pengedaran Linux standard, jadi anda perlu memasangnya. Ini juga mempunyai nama yang berbeza dalam keluarga Linux yang berbeza, tetapi semuanya bekerja dengan cara yang sama. Anda hanya perlu mengganti nama perintah yang sesuai dengan citarasa Linux yang anda gunakan.
dalam pengedaran yang berasal dari Ubuntu dan Debian anda pasang rename
seperti ini:
sudo apt-get namakan semula pemasangan
Dalam pengedaran yang berasal dari Fedora dan RedHat, anda memasang prename
seperti ini. Perhatikan "p" awal yang merupakan singkatan dari Perl.
sudo dnf pasang nama depan
Untuk memasangnya di Manjaro Linux gunakan arahan berikut. Perhatikan bahawa arahan menamakan semula dipanggil perl-rename
.
sudo pacman -Syu perl-ganti nama
Mari Lakukan Itu Lagi
Dan kali ini kita akan gunakan rename
. Kami akan mengembalikan masa sehingga kami mempunyai satu set fail ".prog".
ls * .prog
Sekarang mari kita gunakan arahan berikut untuk menamakannya semula. Kami kemudian akan memeriksa ls
sama ada ia berfungsi. Ingatlah untuk mengganti rename
dengan nama perintah yang sesuai untuk Linux anda jika anda tidak menggunakan Ubuntu atau Linux yang berasal dari Debian.
ganti nama 's / .prog / .prg /' * .prog
ls * .pr *
Yang berjaya, sekarang mereka semua fail ".prg", dan tidak ada fail ".prog" yang tersisa di direktori.
Apa Yang Terjadi TIme Ini?
Mari kita jelaskan sedikit sihir itu, dalam tiga bahagian.
Bahagian pertama adalah nama perintah, rename
(atau prename
atau perl-rename
, untuk pengedaran lain).
Bahagian terakhir adalah *.prog
, yang memberitahu rename
untuk beroperasi pada semua fail ".prog".
Bahagian tengah menentukan kerja yang ingin kita laksanakan pada setiap nama fail. Cara s
pengganti. Istilah pertama ( .prog
) adalah apa yang rename
akan dicari dalam setiap nama fail dan istilah kedua ( .prg
) adalah yang akan digantikan dengan.
Bahagian tengah perintah, atau ungkapan pusat, adalah 'ungkapan biasa' Perl dan inilah yang memberikan rename
fleksibiliti kepada perintah itu.
Menukar Bahagian Lain dari Nama Fail
Kami telah menukar peluasan nama fail setakat ini, mari kita ubah bahagian nama fail yang lain.
Di dalam direktori terdapat banyak fail kod sumber C. Semua nama fail diawali dengan "slang_". Kami boleh menyemaknya dengan ls
.
ls sl * .c
Kami akan mengganti semua kejadian "slang_" dengan "sl_". Format arahan sudah biasa kita ketahui. Kami hanya mengubah istilah carian, istilah penggantian, dan jenis fail.
ganti nama 's / slang_ / sl_' * .c
Kali ini kami mencari file ".c", dan mencari "slang_". Setiap kali "slang_" dijumpai dalam nama file, ia digantikan dengan "sl_".
Kita dapat memeriksa hasil perintah itu dengan mengulangi ls
perintah dari atas dengan parameter yang sama:
ls sl * .c
Memadam Bahagian Nama Fail
Kita boleh membuang sebahagian daripada nama fail dengan menggantikan istilah carian dengan apa-apa.
ls * .c
ganti nama 's / sl _ //' * .c
ls * .c
Kita dapat melihat dari ls
perintah bahawa fail ".c" kita semua disiapkan dengan "sl_" Mari kita hapuskan sama sekali.
The rename
arahan berikut format yang sama seperti sebelum ini. Kami akan mencari fail ".c". Istilah carian adalah "sl_", tetapi tidak ada istilah penggantian. Dua garis miring balik tanpa apa-apa di antara mereka tidak bermaksud apa-apa, tali kosong.
rename
akan memproses setiap fail ".c" secara bergantian. Ia akan mencari "sl_" dalam nama fail. Sekiranya ia dijumpai, ia akan diganti dengan apa-apa. Dengan kata lain, istilah carian dihapuskan.
Penggunaan kedua ls
perintah mengesahkan bahawa awalan "sl_" telah dihapus dari setiap file ".c".
Hadkan Perubahan pada Bahagian Nama Fail tertentu
Mari kita gunakan ls
untuk melihat fail yang mempunyai rentetan "param" dalam nama fail mereka. Kemudian kita akan gunakan rename
untuk mengganti tali itu dengan rentetan "parameter". Kami akan menggunakan ls
sekali lagi untuk melihat kesan rename
perintah pada fail tersebut.
ls * param *
ganti nama 's / param / parameter' * .c
ls * param *
Empat fail dijumpai yang memiliki "param" dalam nama file mereka. param.c, param_one.c, dan param_two.c semuanya mempunyai "param" pada awal nama mereka. Third_param.c mempunyai "param" di akhir namanya, tepat sebelum peluasan.
The rename
arahan akan mencari "param" di mana-mana dalam nama fail, dan menggantikannya dengan "parameter" dalam semua kes.
Penggunaan ls
perintah kedua menunjukkan kepada kita bahawa itulah yang telah berlaku. Sama ada "param" berada di awal atau di akhir nama file, itu telah diganti dengan "parameter."
Kita boleh menggunakan metacharacters Perl untuk memperbaiki tingkah laku ungkapan tengah. Metacharacters adalah simbol yang mewakili kedudukan atau urutan watak. Sebagai contoh, ^
bermaksud "permulaan rentetan", $
bermaksud "akhir rentetan", dan .
bermaksud mana-mana watak tunggal (selain daripada watak barisan baru).
Kami akan menggunakan permulaan metacharacter string ( ^
) untuk mengehadkan carian kami hingga permulaan nama fail.
ls * param * .c
ganti nama parameter / nilai / '* .c
ls * param * .c
Nilai l * .c
Fail yang kami namakan sebelumnya terdaftar, dan kami dapat melihat rentetan "parameter" berada di awal tiga nama fail dan di hujung salah satu nama fail.
rename
Perintah kami menggunakan permulaan baris (^
) metacharacter sebelum istilah carian "parameter." Ini memberitahu bahawa rename
hanya menganggap istilah carian telah dijumpai jika terdapat di awal nama fail. String carian "parameter" akan diabaikan jika ada di tempat lain di nama fail.
Memeriksa ls
, kita dapat melihat bahwa nama file yang memiliki "parameter" di akhir nama file belum diubah, tetapi tiga nama file yang memiliki "parameter" pada awal nama mereka telah mengganti rentetan pencarian dengan istilah pengganti "Nilai."
Kekuatan rename
pembohongan terletak pada kekuatan Perl. Semua kekuatan Perl ada di tangan anda.
Mencari Dengan Pengumpulan
rename
mempunyai lebih banyak tipu daya. Mari pertimbangkan kes di mana anda mungkin mempunyai fail dengan rentetan yang serupa dalam namanya. Mereka bukan rentetan yang sama, jadi carian dan penggantian mudah tidak akan berfungsi di sini.
Dalam contoh ini kita gunakan ls
untuk memeriksa file mana yang kita miliki dengan "str". Terdapat dua daripadanya, string.c dan strangle.c. Kita boleh menamakan semula kedua rentetan sekaligus menggunakan teknik yang disebut pengelompokan.
Ungkapan pusat rename
perintah ini akan mencari rentetan dalam nama fail yang mempunyai urutan watak "stri" atau "stra" di mana urutan tersebut segera diikuti oleh "ng". Dengan kata lain, istilah carian kita akan mencari "string" dan "strang". Istilah penggantian adalah "bang".
ls str * .c
ganti nama 's / (stri | stra) ng / bang /' * .c
Larangan * .c
Menggunakan ls
kali kedua mengesahkan bahawa string.c telah menjadi bang.c dan strangle.c kini menjadi bangle.c.
Menggunakan Terjemahan Dengan ganti nama
The rename
arahan boleh melakukan tindakan pada nama fail dipanggil terjemahan. Contoh ringkas terjemahan adalah memaksa sekumpulan nama fail menjadi huruf besar.
Dalam rename
perintah di bawah notis bahawa kita tidak menggunakan s/
untuk mula ungkapan pusat, kita menggunakan y/
. Ini memberitahu bahawa rename
kami tidak melakukan penggantian; kami sedang melakukan terjemahan.
The a-z
jangka adalah ungkapan Perl yang bermakna semua aksara huruf kecil dalam urutan dari a hingga z. Begitu juga, A-Z
istilah ini mewakili semua huruf besar dalam urutan dari A hingga Z.
Ungkapan pusat dalam perintah ini dapat diparafrasa sebagai "jika ada huruf kecil dari a hingga z yang ditemukan dalam nama file, gantikannya dengan karakter yang sesuai dari urutan huruf besar dari A hingga Z."
Untuk memaksa nama fail semua fail ".prg" menjadi huruf besar, gunakan arahan ini:
namakan semula 'y / az / AZ /' * .prg
ls * .PRG
Yang ls
menunjukkan arahan kita bahawa semua ".prg" nama fail kini dalam huruf besar. Sebenarnya, untuk menjadi tepat, mereka bukan fail ".prg" lagi. Mereka fail ".PRG". Linux peka huruf besar kecil.
Kita boleh membalikkan perintah terakhir dengan membalikkan kedudukan a-z
dan A-Z
istilah dalam ungkapan tengah.
namakan semula 'y / AZ / az /' * .PRG
ls * .prg
Anda (Wo | Do) tidak Belajar Perl dalam Lima Minit
Mengendalikan Perl adalah masa yang dihabiskan dengan baik. Tetapi untuk mula menggunakan kemampuan penjimatan masa rename
perintah, anda tidak perlu mempunyai banyak pengetahuan Perl sama sekali untuk mendapatkan keuntungan besar dari segi kekuatan, kesederhanaan dan masa.