Yeni Başlayanlar İçin Linux Xargs Komutunun 12 Pratik Örneği


Xargs, standart girişten veri akışlarını okuyan, ardından komut satırları oluşturup çalıştıran harika bir komuttur; yani bir komutun çıktısını alıp başka bir komutun argümanı olarak iletebilir. Herhangi bir komut belirtilmezse, xargs varsayılan olarak echo'yu çalıştırır. Birçoğunuz ona stdin yerine bir dosyadan veri okuması talimatını da veriyorsunuz.

Komut satırının günlük kullanımında xargs'ın yararlı olabileceği birkaç yol vardır. Bu yazımızda yeni başlayanlar için 12 pratik Linux xargs komut örneğini açıklayacağız.

1. İlk örnek, aşağıdaki gibi tüm .png görüntülerinin nasıl bulunacağını ve tar yardımcı programını kullanarak bunların nasıl arşivleneceğini gösterir.

Burada, -print0 eylem komutu, standart çıktıda tam dosya yolunun yazdırılmasını sağlar, ardından bir boş karakter gelir ve -0 xargs bayrağı, dosya adlarındaki boşlukla etkili bir şekilde ilgilenir.

find Pictures/tecmint/ -name "*.png" -type f -print0 | xargs -0 tar -cvzf images.tar.gz

2. Aşağıdaki gibi xargs kullanarak ls komutundan çok satırlı çıktıyı tek satıra da dönüştürebilirsiniz.

ls -1 Pictures/tecmint/
ls -1 Pictures/tecmint/ | xargs

3. Sistemdeki tüm Linux kullanıcı hesaplarının kısa bir listesini oluşturmak için aşağıdaki komutu kullanın.

cut -d: -f1 < /etc/passwd | sort | xargs

4. Bir dosya listeniz olduğunu ve listedeki her bir dosyadaki satır/kelime/karakter sayısını bilmek istediğinizi varsayarak, ls komutunu kullanabilir ve xargs bu amaç için aşağıdaki gibidir.

ls *upload* | xargs wc

5. Xarags ayrıca bir dizini bulmanıza ve yinelemeli olarak kaldırmanıza da olanak tanır; örneğin, aşağıdaki komut İndirilenler dizinindeki DomTerm'i yinelemeli olarak kaldırır.

find Downloads -name "DomTerm" -type d -print0 | xargs -0 /bin/rm -v -rf "{}"

6. Önceki komuta benzer şekilde, geçerli dizindeki net_stats adlı tüm dosyaları da bulabilir ve silebilirsiniz.

find . -name "net_stats" -type f -print0 | xargs -0 /bin/rm -v -rf "{}"

7. Ardından, bir dosyayı aynı anda birden fazla dizine kopyalamak için xargs'ı kullanın; bu örnekte dosyayı kopyalamaya çalışıyoruz.

echo ./Templates/ ./Documents/ | xargs -n 1 cp -v ./Downloads/SIC_Template.xlsx 

8. Belirli bir dizindeki tüm dosyaları veya alt dizinleri aşağıdaki gibi küçük harfle yeniden adlandırmak için find komutunu, xargs ve rename komutlarını birlikte kullanabilirsiniz.

find Documnets -depth | xargs -n 1 rename -v 's/(.*)\/([^\/]*)/$1\/\L$2/' {} \;

9. Burada xargs için başka bir yararlı kullanım örneği verilmiştir; belirli bir uzantıya sahip bir veya birkaç dosya dışında bir dizindeki tüm dosyaların nasıl silineceğini gösterir.

find . -type f -not -name '*gz' -print0 | xargs -0 -I {} rm -v {}

10. Daha önce de belirtildiği gibi, gösterildiği gibi -a işaretini kullanarak xargs'a standart giriş yerine dosyadaki öğeleri okuması talimatını verebilirsiniz.

xargs -a rss_links.txt

11. xargs'a komut satırını çalıştırmadan önce standart hata çıktısına yazdırmasını söyleyen -t işaretini kullanarak ayrıntı düzeyini etkinleştirebilirsiniz.

find Downloads -name "DomTerm" -type d -print0 | xargs -0 -t /bin/rm -rf "{}"

12. Varsayılan olarak, xargs öğeleri boşluk kullanarak sonlandırır/sınırlandırır; sınırlayıcıyı ayarlamak için -d bayrağını kullanabilirsiniz. tek karakter, \n gibi C tarzı bir karakter kaçışı veya sekizlik veya onaltılık bir kaçış kodu.

Ek olarak, gösterildiği gibi -p bayrağını kullanarak kullanıcıya her komut satırını çalıştırıp çalıştırmayacağını ve terminalden bir satırı okuyup okumayacağını sorabilirsiniz (sadece y yazın) evet veya hayır için n).

echo ./Templates/ ./Documents/ | xargs -p -n 1 cp -v ./Downloads/SIC_Template.xlsx 

Daha fazla bilgi için xargs kılavuz sayfasını okuyun.

man xargs 

Şimdilik bu kadar! Xargs, komut satırı oluşturmaya yönelik güçlü bir yardımcı programdır; bir komutun çıktısını işlenmek üzere başka bir komutun argümanı olarak aktarmanıza yardımcı olabilir. Bu yazımızda yeni başlayanlar için 12 pratik xargs komut örneğini anlattık. Aşağıdaki geri bildirim formunu kullanarak düşüncelerinizi veya sorularınızı bizimle paylaşın.