Linux'ta Komut Yeniden Adlandırma Nasıl Kullanılır

Linux dünyasının güç merkezini yeniden adlandırmakla uğraşın ve hem mvkendinize hem de dinlenin. Renameesnek, hızlı ve bazen daha da kolay. İşte bu güçlü komuta dairesi için bir öğretici.

MV'nin Nesi Yanlış?

Yanlış bir şey yok mv. Komut iyi bir iş çıkarır ve tüm Linux dağıtımlarında, macOS'ta ve diğer Unix benzeri işletim sistemlerinde bulunur. Bu yüzden her zaman kullanılabilir. Ama bazen bir kürek yerine bir buldozere ihtiyacınız vardır.

mvKomut hayatta bir amacı vardır ve bu dosyaları taşımaktır. O varolan bir dosyayı taşımak için kullanılabileceğini mutlu bir yan etkidir içine yeni bir adla, yeni bir dosya. Net etki, dosyayı yeniden adlandırmaktır, böylece istediğimizi elde ederiz. Ancak mvadanmış bir dosya yeniden adlandırma aracı değildir.

Tek bir Dosyayı mv ile Yeniden Adlandırma

mvDosya türünü mv, boşluğu, dosyanın adını, boşluğu ve dosyanın sahip olmasını istediğiniz yeni adı yeniden adlandırmak için kullanmak için . Ardından Enter tuşuna basın.

lsDosyanın yeniden adlandırılıp adlandırılmadığını kontrol etmek için kullanabilirsiniz  .

mv oldfile.txt newfile.txt
ls * .txt

Mv ile Birden Çok Dosyayı Yeniden Adlandırma

Birden fazla dosyayı yeniden adlandırmak istediğinizde işler daha karmaşık hale gelir. mvbirden çok dosyanın yeniden adlandırılmasıyla başa çıkma yeteneği yoktur. Bazı şık Bash hilelerine başvurmalısınız. Orta dereceli bir komut satırı fu biliyorsanız, bu sorun değil, ancak birden fazla dosyayı yeniden adlandırmanın karmaşıklığı, tek bir dosyayı yeniden adlandırmak mviçin kullanım kolaylığıyla tam bir tezat oluşturuyor mv.

İşler hızla büyüyor.

Diyelim ki, içinde farklı türlerde çeşitli dosyaların bulunduğu bir dizinimiz var. Bu dosyalardan bazıları ".prog" uzantısına sahiptir. Bunları komut satırında ".prg" uzantısına sahip olacak şekilde yeniden adlandırmak istiyoruz.

Bunu bizim mviçin yapmak için nasıl mücadele edeceğiz ? Dosyalara bir göz atalım.

ls * .prog -l

İşte gerçek bir Bash komut dosyası yazmaya başvurmayan bunu yapmanın bir yolu.

f in * .prog için; mv - "$ f" "$ {f% .prog} .prg"

İşe yaradı mı? Dosyaları kontrol edip görelim.

ls * .pr *

Yani, evet, işe yaradı. Artık hepsi ".prg" dosyaları ve dizinde ".prog" dosyaları yok.

Az önce ne oldu?

Bu uzun komut aslında ne yaptı? Parçalayalım.

f in * .prog için; mv - "$ f" "$ {f% .prog} .prg"

İlk bölüm, sırayla dizindeki her ".prog" dosyasını işleyecek bir döngü başlatır.

Bir sonraki bölüm işlemenin ne yapacağını anlatıyor . mvHer dosyayı yeni bir dosyaya taşımak için kullanıyor  . Yeni dosya, “.prog” kısmı hariç orijinal dosyanın adıyla adlandırılacaktır. Bunun yerine yeni bir ".prg" uzantısı kullanılacaktır.

Daha Basit Bir Yol Olmalı

Kesinlikle. Bu renameemirdir.

renamestandart bir Linux dağıtımının parçası değildir, bu yüzden onu yüklemeniz gerekir. Ayrıca farklı Linux ailelerinde farklı bir adı vardır, ancak hepsi aynı şekilde çalışır. Sadece kullandığınız Linux çeşidine göre uygun komut adını değiştirmeniz gerekecek.

Ubuntu ve Debian'dan türetilmiş dağıtımlarda şu şekilde kurabilirsiniz rename:

sudo apt-get install yeniden adlandırma

Fedora ve RedHat'tan türetilmiş dağıtımlarda bu şekilde yüklersiniz prename. Perl anlamına gelen "p" harfine dikkat edin.

sudo dnf yükleme prename

Manjaro Linux'a kurmak için aşağıdaki komutu kullanın. Yeniden adlandırma komutunun çağrıldığını unutmayın perl-rename.

sudo pacman -Syu perl-yeniden adlandır

Hadi Tekrar Yapalım

Ve bu sefer kullanacağız rename. Bir dizi ".prog" dosyamız olacak şekilde saati geri alacağız.

ls * .prog

Şimdi onları yeniden adlandırmak için aşağıdaki komutu kullanalım. Daha sonra lsçalışıp çalışmadığını kontrol edeceğiz . Yerine unutmayın renameUbuntu veya Debian türevi Linux kullanmıyorsanız Linux için uygun komut adı ile.

's / .prog / .prg /' * .prog olarak yeniden adlandır
ls * .pr *

Bu işe yaradı, artık hepsi ".prg" dosyaları ve dizinde ".prog" dosyası kalmadı.

Bu Zamanda Ne Oldu?

Bu sihri biraz üç bölümde açıklayalım.

İlk bölüm, komut adıdır rename(ya prenameya perl-renamediğer dağılımlar için).

Son parçasıdır *.progsöyler, renamebütün “.prog” dosyalar üzerinde işlem.

Orta kısmı istediğimiz iş her dosya üzerinde yapılacak tanımlar. Araç syerine geçer. İlk terim ( .prog), renameher dosya adında arayacak olan şeydir ve ikinci terim ( .prg) ile ikame edileceği terimdir .

Komutun orta kısmı veya merkezi ifade, bir Perl 'normal ifadesi'dir ve renamekomuta esnekliğini veren şeydir .

Dosya Adının Diğer Bölümlerini Değiştirme

Şimdiye kadar dosya adı uzantılarını değiştirdik, dosya adlarının diğer kısımlarını değiştirelim.

Dizinde çok sayıda C kaynak kodu dosyası var. Tüm dosya adlarının önünde "slang_" bulunur. Bunu ile kontrol edebiliriz ls.

ls sl * .c

Tüm "slang_" oluşumlarını "sl_" ile değiştireceğiz. Komutun formatı zaten bize aşinadır. Sadece arama terimini, yerine geçen terimi ve dosya türünü değiştiriyoruz.

"s / slang_ / sl_" yeniden adlandır * .c

Bu sefer ".c" dosyalarını arıyoruz ve "slang_" arıyoruz. Bir dosya adında "slang_" bulunduğunda, "sl_" ile değiştirilir.

lsYukarıdaki komutu aynı parametrelerle tekrarlayarak bu komutun sonucunu kontrol edebiliriz :

ls sl * .c

Dosya Adının Bir Kısmını Silme

Arama terimini hiçbir şeyle değiştirerek dosya adının bir kısmını kaldırabiliriz.

ls * .c
yeniden adlandır 's / sl _ //' * .c
ls * .c

Biz de görebileceğiniz lsbizim “.c” dosyaları tüm “sl_” ile başa getirilir o komutu. Hep birlikte bundan kurtulalım.

renameKomut önce aynı biçimi izler. ".C" dosyalarını arayacağız. Arama terimi "sl_", ancak ikame terimi yok. Aralarında hiçbir şey olmayan iki ters eğik çizgi hiçbir şey ifade etmez, boş bir dize.

renamesırayla her ".c" dosyasını işleyecektir. Dosya adında "sl_" arayacaktır. Bulunursa, hiçbir şeyle değiştirilmez. Diğer bir deyişle, arama terimi silinir.

lsKomutun ikinci kullanımı , "sl_" önekinin her ".c" dosyasından kaldırıldığını doğrular.

Dosya Adlarının Belirli Bölümlerindeki Değişiklikleri Sınırla

Let kullanımı ls onların dosya dize “param” sahip dosyalara bakmak için. Daha sonra renamebu dizeyi "parametre" dizesiyle değiştirmek için kullanacağız . Komutun bu dosyalar üzerindeki lsetkisini görmek için bir kez daha kullanacağız rename.

ls * param *
"s / param / parametresini" yeniden adlandır * .c
ls * param *

Dosya adlarında "param" bulunan dört dosya bulundu. param.c, param_one.c ve param_two.c hiç “param” sahip başından bu kişinin adının. third_param.c adının sonunda , uzantının hemen önünde “param” vardır .

renameKomut dosya her yerde “param” için arama ve her durumda “parametresi” ile değiştirmek için gidiyor.

lsKomutun ikinci kullanımı  bize bunun tam olarak ne olduğunu gösteriyor. "Param" ister dosya adının başında ister sonunda olsun, "parametre" ile değiştirilmiştir.

Ortadaki ifadenin davranışını iyileştirmek için Perl'in meta karakterlerini kullanabiliriz. Metakarakterler, karakterlerin konumlarını veya sıralarını temsil eden sembollerdir. Örneğin, ^"bir dizenin başlangıcı" $anlamına gelir , "bir dizenin sonu " anlamına gelir ve .herhangi bir tek karakter anlamına gelir (yeni satır karakteri dışında).

Aramamızı ^dosya adlarının başlangıcıyla sınırlandırmak için dize meta karakterinin ( ) başlangıcını kullanacağız .

ls * param * .c
's / ^ parametresini / değerini /' * .c olarak yeniden adlandırın
ls * param * .c
ls değeri * .c

Daha önce yeniden adlandırdığımız dosyalar listelenmiştir ve "parametre" dizesinin üç dosya adının başında ve dosya adlarından birinin sonunda olduğunu görebiliriz.

Bizim renamekomut satırı başlangıcını kullandığı  (^arama terimi öncesi) metakarakteri “parametresi.” Bu rename, arama teriminin yalnızca dosya adının başındaysa bulunmuş olduğunu düşünmenizi söyler . "Parametre" arama dizesi, dosya adında başka herhangi bir yerdeyse yok sayılacaktır.

İle kontrol ediliyor ls, biz de “parametresini” vardı dosya adı olduğunu görebilirsiniz sonunda dosya adının değiştirilmedi, ama en “parametresini” vardı üç dosya adları başından isimlerinin yerine terimiyle değiştirilir arama dizesini oldu "Değer."

Gücü renamePerl gücüne yalanları. Perl'in tüm gücü emrinizde.

Gruplamalarla Arama

renamedaha fazla hileye sahip. Adlarında benzer dizelere sahip dosyalarınızın olabileceği durumu ele alalım. Tam olarak aynı dizeler değiller, bu yüzden basit bir arama ve ikame burada işe yaramayacak.

Bu örnekte ls "str" ​​ile başlayan dosyalara sahip olduğumuzu kontrol etmek için kullanıyoruz . İki tane var, string.c ve strangle.c. Gruplama adı verilen bir teknik kullanarak her iki dizeyi aynı anda yeniden adlandırabiliriz.

Bu renamekomutun merkezi ifadesi, dosya adları içinde "stri" veya "stra" karakter dizisine sahip dizeleri arayacak ve bu dizilerin hemen ardından "ng" gelecektir . Başka bir deyişle, arama terimimiz " string" ve "strang" kelimelerini arayacaktır. İkame terimi "bang" tir.

ls str * .c
's / (stri | stra) ng / bang /' * .c olarak yeniden adlandır
ls ban * .c

ls İkinci kez kullanmak  string.c'nin bang.c olduğunu ve strangle.c'nin artık bangle.c olduğunu doğrular.

Çevirileri Yeniden Adlandırarak Kullanma

renameKomut çevirileri denilen dosya adları üzerinde işlem gerçekleştirebilir. Çevirinin basit bir örneği, bir dizi dosya adını büyük harfe zorlamak olabilir.

Gelen renamebiz kullanıyor olmayacak şekilde haber aşağıda komuta s/ merkezi ifadesini başlatmak için, biz kullanıyoruz y/. Bu,  renamebir oyuncu değişikliği yapmadığımızı gösterir; bir çeviri yapıyoruz.

a-z Terimi, z bir sekans olarak tüm küçük karakter anlamına gelir Perl ifadesidir. Benzer şekilde, A-Z terim A'dan Z'ye dizideki tüm büyük harfleri temsil eder.

Bu komuttaki merkezi ifade, "dosya adında a'dan z'ye küçük harflerden herhangi biri bulunursa, bunları A'dan Z'ye büyük harfli karakter dizisindeki karşılık gelen karakterlerle değiştirin." Şeklinde yorumlanabilir.

Tüm ".prg" dosyalarının dosya adlarını büyük harfe zorlamak için şu komutu kullanın:

'y / az / AZ /' * .prg olarak yeniden adlandırın

ls * .PRG

lsKomut gösterileri bize “.prg” dosya adları tüm büyük harfle şimdi olduğu. Aslında, kesin olarak doğru olmak gerekirse, artık ".prg" dosyaları değiller. Bunlar ".PRG" dosyalarıdır. Linux büyük / küçük harfe duyarlıdır.

 Merkezi ifadede a-zve A-Zterimlerinin konumunu ters çevirerek bu son komutu tersine çevirebiliriz .

yeniden adlandır 'y / AZ / az /' * .PRG

ls * .prg

Beş Dakikada Perl Öğrenemezsiniz (Wo | Do)

Perl ile başa çıkmak, iyi harcanan zamandır. Ancak renamekomutun zaman kazandıran yeteneklerini kullanmaya başlamak için güç, basitlik ve zamandan büyük faydalar elde etmek için çok fazla Perl bilgisine sahip olmanıza gerek yok.