Bir dizindeki dosyalar arasında bash döngüsü

Bash Loop Through Files Directory



Bash da dahil olmak üzere Ubuntu'da döngüler, birden çok dosyaya işlem uygulamayı mümkün kılmıştır. Döngü, kullanıcının küçük bir kod satırı kullanarak öğeye aynı mantığı tekrar tekrar uygulamasına izin verdiği için en etkili şeydir.

Dizindeki dosyalar üzerinde döngü kavramını anlamak için Ubuntu uygulamasına ve hizmetlerine erişmeniz gerekir. Bazı ayrıcalıklara sahip olduğunuzda, yalnızca dosya ve dizinlerle çalışabilirsiniz.







Bash'i Ubuntu işletim sistemine kurmuş olmalısınız. Bazı kurulumlarda, paketlerin güncellenmesinde varsayılan olarak kurulur. Halihazırda kuruluysa, sürümü yükseltmeniz gerekir, çünkü 4'ün üzerinde olmalıdır. Mevcut kılavuza devam etmek için, sürümü 4'ün üzerinde tutmanız gerekir. Sisteminizde önceden yüklenmiş Bash'in sürümünü kontrol etmek için, Ubuntu terminalinde komut.



$bash--versiyon



Bu yüzden dosya ve dizinler üzerinde bazı işlevleri yerine getirmeniz gerekir. Aşağıda açıklanan komutları istediğiniz herhangi bir dizinde çalıştırabilirsiniz. Ancak daha kesin olmak gerekirse, yeni bir dizin oluşturmak tercih edilir, böylece açtığınızda bunun tüm eşyalarına doğrudan kolayca erişilebilir.





İlk adım bir dizin oluşturmaktır. Abc dizininin örnek bir adını aldık. Komutu yürüterek bir dizin oluşturun.

$mkdirABC



Dizini oluşturduktan sonra, şimdi bunun üzerindeki tüm komutları gerçekleştirmeniz gerekiyor. Yani dizini oluşturduktan sonra o dizine geçin. Aşağıda belirtilen komutu kullanın:

$CDABC

Dizine gittikten sonra şimdi touch komutunu kullanarak bazı dosyalar oluşturun.

$dokunmadosya1.txt

Ubuntu'da bir dosya oluşturmak için birçok yöntem kullanılır. Touch komutunun yanı sıra, burada bir dosya oluşturmak ve içeriği toplu olarak tek bir komutta eklemek için echo komutunu kullandık:

$dışarı attıLinux, ubuntu, Postgresql>dosya7.txt

Bu dosya, şu anda varsayılan olarak çalışan basit bir dizinde oluşturulur. Böylece yeni oluşturulan dizinin adı komut istemiyle eklenmez. Dokunma komutunda bir aralık ve genişletme kullanarak da dosyalar oluşturabilirsiniz.

$dokunmadosya-{1..8}.txt

Bu komut kullanılarak yeni dosyalarda tek komut kullanılarak .txt uzantıları oluşturulacaktır.

Bundan sonra, şimdi yeni oluşturulan dizinde dolaşabilirsiniz. Dosya adlarını görüntüleyin. Dizinde bulunan dosyalar arasında dolaşmak zorunda olduğumuz için bir döngüye ihtiyacımız var. Döngüler, verileri daha kısa sürede getirdikleri ve daha az girdi gerektirdiği için kullanımı çok etkilidir. Burada bir for döngüsü kullanacağız. Bu döngü kullanılarak, her dosya adı bir sonraki satırda gösterilecektir.

$için dosya içinde *;yapmak dışarı attı $dosya;tamamlamak

* bu dizinde bulunan tüm dosyalar için kullanılır. Bu, 'for' döngüsünün tüm dosyaları almasına izin verir. Ancak çıktıyı kesin hale getirmek için yıldız işaretiyle bazı terimler ekleyebilirsiniz. Örneğin, dosyadan başlayan tüm dosyalar için 'file-*' kullanılır. Ve *.txt, .txt uzantılı dosyaları getirmek için. Bu örnekleri yazımızın devamında kullanacağız.

Bu döngü, dizindeki tüm dosyaları alacak ve ardından tüm dosyaları echo komutuyla gösterecek şekilde çalışacaktır. Buradaki $ işareti dosyanın adını temsil eder. Sonuçtan, her dosya adının gösterildiğini görebilirsiniz.

Dosya adlarını görüntüleyerek oluşturulan dosyaları doğruladıktan sonra, oluşturulan dosyalar boş olduğu için artık dosyalardaki değeri girme zamanı. Bu, her dosyayı metin düzenleyicide açıp ardından verileri yazarak manuel olarak yapılabilir. İkinci seçenek, terminaldeki komut aracılığıyla her dosyaya veri girmektir. Ancak her dosyaya tek komutla verilerin girilmesi zaman gerektirir. Ancak tek bir komutta for döngüsü kullanılarak kolayca ve toplu olarak yapılabilir.

$için dosya içinde *;yapmak dışarı attı -2 $dosya Linux Ubuntu> $dosya;tamamlamak

Komutun yürütülmesinden sonra oluşturduğumuz her dosyaya değer girilmiştir. Echo ile kullanıldığında, '-e' bayrağı dosyadaki yeni satırı koruyacaktır. Girilen verileri görmek için 'abc' dizinine gidebilirsiniz. Şimdi herhangi bir metin dosyasını açın. Dosya artık boş değil.

'$file dosyada önce dosya adını gösterecek ve girdiğiniz veriler ikinci satırda önizlenecektir çünkü bundan sonra kullanılan kelimeleri başka bir satıra kaydırmak için kullanılır. Ayrıca komut aracılığıyla girilen verileri de kontrol edebilirsiniz.

$için dosya içinde *;yapmak kedi $dosya;tamamlamak

Cat komutu, dizinin tüm dosyalarında bulunan verileri getirmek için kullanılır.

Hem veri girme hem de getirme işlemi tek bir komutla yapılabilir.

$için dosya içinde *;yapmak dışarı attı-Ve$dosya bash programlama> $dosya;kedi $dosya;tamamlamak

İlk adım, verileri dosyaya yazmak ve ardından görüntülemektir. Komutu çalıştırdığınızda çıktısı aşağıdaki gibi olacaktır.

Her dosya aynı değeri içerir. Bunun nedeni 'for' döngüsüdür.

Verileri almak ve değerleri eklemek vb. için döngüyü biliyoruz, ancak döngü aynı zamanda yedekleme oluşturmak için de kullanılıyor. Bu dosyaların sonunda .bak uzantısı vardır. Şimdi her dosyanın yedeğini görmek için kabukta yedekleme komutunu yürütün.

$için dosya içinde *;yapmak cp $dosya $dosya.arka;tamamlamak;

Tüm dosyaları yedeklemek için cp anahtar sözcüğü kullanılır. Şimdi bu komutun uygulandığı dosyaları görmek için. Komutu şu şekilde kullanıyoruz:

$ls- NS

Artık çıktıdan dosyaların detaylarının gösterildiği görülüyor. Silindiği tarih, dosya adı, kullanıcı adı ve saat. Ayrıca, her dosyanın doğru bir kopyasına sahipsiniz.

Sadece jpeg dosyalarını istiyorsak. Bunu komutta kullanacağız

$için dosya içinde *.jpeg;yapmak dışarı attı $dosya;tamamlamak

Bu sadece resimlerin isimlerini getirecektir.

Basit bir keşif de aynı işlevi görebilir. .sh uzantılı tüm dosyaları getirecektir.

$bulmak. - isim*NS

For döngüsünde find anahtar sözcüğünü kullanacağız.

$için dosya içinde *;yapmakbulmak. Dosya.*;tamamlamak

Bu, tüm dosyaları geçerli dizine getirecektir. Bunların .bak, .jpeg, .txt uzantıları vardır. vesaire.

Şimdi, tüm dizin dosyalarının adını ve içindeki verileri görmek istiyorsanız, bu da 'for' döngüsü tarafından yapılır.

$için dosya içinde *;yapmak dosya $dosya;tamamlamak

Çözüm

Herhangi bir dizindeki dosyalar arasında dolaşmak, bildiğimiz gibi, Bash'te döngüler kullanmak ve Linux işletim sistemlerinde gerçekleştirmek artık zor değil. Bu öğretici, bir 'for' döngüsü kullanarak dizinde işlemler oluşturmaya, erişmeye ve gerçekleştirmeye yönelik eksiksiz bir kılavuzdur.