Örneklerle Linux’ta xargs Komutu Nasıl Kullanılır

Merhabalar,

 

Xargs, standart girdiden veri akışlarını okuyan, ardından komut satırları oluşturan ve yürüten 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 olarak  yürütür. Bir çoğunuz ona stdin yerine bir dosyadan veri okumasını da söylüyorsunuz.

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

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

find -name "*.jpg" -type f -print0 | xargs -0 tar -cvzf images.tar.gz

 

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

 

2. ls komutundan çıkan muti-line çıktısını da aşağıdaki gibi xargs kullanarak tek satıra çevirebilirsiniz.

ls -1 | xargs

 

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

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

 

 

 

4. Bir dosya listeniz olduğunu ve listedeki her dosyadaki satır/kelime/karakter sayısını bilmek istediğinizi varsayarsak, bu amaçla ls komutunu ve xargs’ı aşağıdaki gibi kullanabilirsiniz.

ls *linux* | xargs wc

Xargs-Count-Number-of-Lines-Words-and-Characters-in-Files

 

 

5. Xarags ayrıca bir dizini bulmanızı ve yinelemeli olarak kaldırmanızı sağlar, örneğin aşağıdaki komut Proje dizinini içindeki alt dizinlerle birlikte yinelemeli olarak kaldırır.

find proje -type d -print0 | xargs -0 rm -v -rf "{}"

 

6. Bir önceki komuta benzer şekilde, geçerli dizinde php uzantılı tüm dosyaları da bulabilir ve silebilirsiniz.

 

 

find proje/*.php -type f -print0 | xargs -0 rm -v -rf "{}"

 

 

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

echo ./proje ./proje2/ | xargs -n 1 cp -v /home/firatcanoglu/Desktop/wordpress/images25.jpg

 

8. Belirli bir dizindeki (xargs dizini) 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 kullanabiliriz.

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

 

9. İşte xargs için başka bir faydalı kullanım örneği, 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 '*proje' -print0 | xargs -0 -I {} rm -v {}

 

 

10. Daha önce belirtildiği gibi, xargs’a standart girdi yerine -a bayrağını kullanarak bir dosyadan öğeleri okuması talimatını verebilirsiniz.

xargs -a disk-usage.txt

xargs-to-read-items-from-a-file-instead-of-standard-input

 

 

11. Ayrıntıları, xargs’a çalıştırmadan önce standart hata çıktısında komut satırını yazdırmasını söyleyen -t bayrağını kullanarak etkinleştirebilirsiniz.

sudo find Desktop -name "HATAROMA" -type d -print0 | xargs -0 -t /bin/rm -rf "{}"
xargs-print-the-command-line-on-the-standard-error-output-before-executing it

xargs-print-the-command-line-on-the-standard-error-output-before-executing it

 

 

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

echo ./proje/ ./proje2/ | xargs -p -n 1 cp -v ./result/result.txt
xargs-Prompt-User-Before-running-Command

xargs-Prompt-User-Before-running-Command

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

 

Bu eğitim yazımızında sonuna geldik.Umarım sizler için faydalı olur.

 

 

Bu eğiticiye oy ver
[Total: 1 Average: 5]
Firat CANOĞLU TAĞ