Ben cevap vermeyeceğim biliyoruz xargsdoğrudan soru ama onun bahsetmemiz find'ın -execseçeneği.
Aşağıdaki dosya sistemi göz önüne alındığında:
[root@localhost bokeh]# tree --charset assci bands
bands
|-- Dream\ Theater
|-- King's\ X
|-- Megadeth
`-- Rush
0 directories, 4 files
Find komutu Dream Theatre ve King's X'teki alanı idare etmek için yapılabilir. Yani, grep kullanarak her bandın davulcularını bulmak için:
[root@localhost]# find bands/ -type f -exec grep Drums {} +
bands/Dream Theater:Drums:Mike Mangini
bands/Rush:Drums: Neil Peart
bands/King's X:Drums:Jerry Gaskill
bands/Megadeth:Drums:Dirk Verbeuren
Gelen -execseçeneği {}yolu da dahil olmak üzere dosya kısaltmasıdır. Kaçmak veya tırnak içine almak zorunda olmadığını unutmayın.
-exec'Nin sonlandırıcıları ( +ve \;) arasındaki fark +, bir komut satırına alabileceği kadar çok dosya adı gruplamasıdır. Oysa \;her dosya adı için komutu yürütür.
Böylece, find bands/ -type f -exec grep Drums {} +sonuç:
grep Drums "bands/Dream Theater" "bands/Rush" "bands/King's X" "bands/Megadeth"
ve find bands/ -type f -exec grep Drums {} \;şunlarla sonuçlanır:
grep Drums "bands/Dream Theater"
grep Drums "bands/Rush"
grep Drums "bands/King's X"
grep Drums "bands/Megadeth"
Bu durumda grep, dosya adını yazdırmanın ya da yazdırmamanın yan etkisi vardır.
[root@localhost bokeh]# find bands/ -type f -exec grep Drums {} \;
Drums:Mike Mangini
Drums: Neil Peart
Drums:Jerry Gaskill
Drums:Dirk Verbeuren
[root@localhost bokeh]# find bands/ -type f -exec grep Drums {} +
bands/Dream Theater:Drums:Mike Mangini
bands/Rush:Drums: Neil Peart
bands/King's X:Drums:Jerry Gaskill
bands/Megadeth:Drums:Dirk Verbeuren
Tabii ki, grep'seçenekleri -hve -Hnasıl grepadlandırılır olursa olsun dosya adının yazdırılıp yazdırılmayacağını kontrol eder .
xargs
xargs ayrıca man dosyalarının komut satırında nasıl olduğunu da kontrol edebilir.
xargsvarsayılan olarak tüm bağımsız değişkenleri tek bir satıra gruplar. Aynı şeyi yapmak için -exec \;kullanıyor mu xargs -l. -tSeçeneğin xargskomutu çalıştırmadan önce yazdırmayı söylediğini unutmayın .
[root@localhost bokeh]# find ./bands -type f | xargs -d '\n' -l -t grep Drums
grep Drums ./bands/Dream Theater
Drums:Mike Mangini
grep Drums ./bands/Rush
Drums: Neil Peart
grep Drums ./bands/King's X
Drums:Jerry Gaskill
grep Drums ./bands/Megadeth
Drums:Dirk Verbeuren
-lSeçeneğin xargs'a her dosya adı için grep yürütmesini söylediğini görün .
Varsayılana karşı (yani -lseçenek yok ):
[root@localhost bokeh]# find ./bands -type f | xargs -d '\n' -t grep Drums
grep Drums ./bands/Dream Theater ./bands/Rush ./bands/King's X ./bands/Megadeth
./bands/Dream Theater:Drums:Mike Mangini
./bands/Rush:Drums: Neil Peart
./bands/King's X:Drums:Jerry Gaskill
./bands/Megadeth:Drums:Dirk Verbeuren
xargskomut satırında kaç dosya olabileceği konusunda daha iyi denetime sahiptir. Seçeneğe -lkomut başına maksimum dosya sayısı verin .
[root@localhost bokeh]# find ./bands -type f | xargs -d '\n' -l2 -t grep Drums
grep Drums ./bands/Dream Theater ./bands/Rush
./bands/Dream Theater:Drums:Mike Mangini
./bands/Rush:Drums: Neil Peart
grep Drums ./bands/King's X ./bands/Megadeth
./bands/King's X:Drums:Jerry Gaskill
./bands/Megadeth:Drums:Dirk Verbeuren
[root@localhost bokeh]#
Bunun grepyüzünden iki dosya adıyla yürütüldüğüne bakın -l2.
ls |grep mp3 |sed -n "7p"sadece kullanabilirsinizecho "Lemon Tree.mp3".