Cara Menggunakan arahan ganti nama pada Linux

Selesaikan fail yang menamakan semula rumah kuasa dunia Linux dan beri mv—dan diri anda — rehat. Renamefleksibel, 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 mvarahan 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 mvbukan alat penamaan semula fail khusus.

Menamakan semula Fail Tunggal Dengan mv

Untuk digunakan mvuntuk menamakan semula jenis file mv, spasi, nama file, spasi, dan nama baru yang ingin Anda miliki. Kemudian tekan Enter.

Anda boleh gunakan  lsuntuk 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. mvtidak 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 mvberdiri bertentangan dengan kemudahan penggunaan mvuntuk 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 mvberusaha 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  mvuntuk 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 renameperintah.

renamebukan 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 renameseperti ini:

sudo apt-get namakan semula pemasangan

Dalam pengedaran yang berasal dari Fedora dan RedHat, anda memasang prenameseperti 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 lssama ada ia berfungsi. Ingatlah untuk mengganti renamedengan 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 prenameatau perl-rename, untuk pengedaran lain).

Bahagian terakhir adalah *.prog, yang memberitahu renameuntuk beroperasi pada semua fail ".prog".

Bahagian tengah menentukan kerja yang ingin kita laksanakan pada setiap nama fail. Cara spengganti. Istilah pertama ( .prog) adalah apa yang renameakan 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 renamefleksibiliti 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 lsperintah 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 lsperintah bahawa fail ".c" kita semua disiapkan dengan "sl_" Mari kita hapuskan sama sekali.

The renamearahan 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.

renameakan 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 lsperintah 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 renameuntuk mengganti tali itu dengan rentetan "parameter". Kami akan menggunakan lssekali lagi untuk melihat kesan renameperintah 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 renamearahan akan mencari "param" di mana-mana dalam nama fail, dan menggantikannya dengan "parameter" dalam semua kes.

Penggunaan  lsperintah 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.

renamePerintah kami menggunakan permulaan baris  (^) metacharacter sebelum istilah carian "parameter." Ini memberitahu bahawa renamehanya 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 renamepembohongan terletak pada kekuatan Perl. Semua kekuatan Perl ada di tangan anda.

Mencari Dengan Pengumpulan

renamemempunyai 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 renameperintah 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 renamearahan boleh melakukan tindakan pada nama fail dipanggil terjemahan. Contoh ringkas terjemahan adalah memaksa sekumpulan nama fail menjadi huruf besar.

Dalam renameperintah di bawah notis bahawa kita tidak menggunakan s/ untuk mula ungkapan pusat, kita menggunakan y/. Ini memberitahu bahawa  renamekami 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 lsmenunjukkan 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-zdan 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 renameperintah, anda tidak perlu mempunyai banyak pengetahuan Perl sama sekali untuk mendapatkan keuntungan besar dari segi kekuatan, kesederhanaan dan masa.