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 mv
kendinize hem de dinlenin. Rename
esnek, 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.
mv
Komut 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 mv
adanmış bir dosya yeniden adlandırma aracı değildir.
Tek bir Dosyayı mv ile Yeniden Adlandırma
mv
Dosya 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.
ls
Dosyanı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. mv
birden ç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 mv
iç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 mv
iç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 . mv
Her 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 rename
emirdir.
rename
standart 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 rename
Ubuntu 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 prename
ya perl-rename
diğer dağılımlar için).
Son parçasıdır *.prog
söyler, rename
bütün “.prog” dosyalar üzerinde işlem.
Orta kısmı istediğimiz iş her dosya üzerinde yapılacak tanımlar. Araç s
yerine geçer. İlk terim ( .prog
), rename
her 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 rename
komuta 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.
ls
Yukarı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 ls
bizim “.c” dosyaları tüm “sl_” ile başa getirilir o komutu. Hep birlikte bundan kurtulalım.
rename
Komut ö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.
rename
sı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.
ls
Komutun 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 rename
bu dizeyi "parametre" dizesiyle değiştirmek için kullanacağız . Komutun bu dosyalar üzerindeki ls
etkisini 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 .
rename
Komut dosya her yerde “param” için arama ve her durumda “parametresi” ile değiştirmek için gidiyor.
ls
Komutun 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 rename
komut 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ü rename
Perl gücüne yalanları. Perl'in tüm gücü emrinizde.
Gruplamalarla Arama
rename
daha 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 rename
komutun 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
rename
Komut ç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 rename
biz kullanıyor olmayacak şekilde haber aşağıda komuta s/
merkezi ifadesini başlatmak için, biz kullanıyoruz y/
. Bu, rename
bir 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
ls
Komut 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-z
ve A-Z
terimlerinin 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 rename
komutun 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.