Borulu komutların sonucunu yakalamaya çalışmak


2

List20140801.txt list20140802.txt adlı bir dosya klasörüne sahibim ....

Bunu yapmaya çalışıyorum

ls | sort | tail -3 | cat

Ama bana sadece dosya isimlerini veriyor, onları bulmakta değil.

Yanıtlar:


2

catEl kitabına göre , kedinin işi:

FILE (s) veya standart giriş ile standart çıktının birleştirilmesi.

catStandart girdilerini dosya isimleri olarak değerlendirmek için hiçbir neden yoktur . İhtiyacın olan şey

ls | sıralama | kuyruk -3 | Xargs kedi

yerine.

xargsDaha fazla bilgi için man sayfasını kontrol edin : http://linux.about.com/library/cmd/blcmdl1_xargs.htm


@ garyjohn'un yukarıdaki cevabına göre, sortbu basit durumda gereksizdir.
AtomHeartFather

0

Çıktısı lszaten varsayılan olarak sortsıralar olarak varsayılan olarak sıralanmıştır , bu yüzden sortgerekli değildir.

Oluşturulan bir dosya listesini bir komuta aktarmanın en yaygın yolu kullanmaktır xargs. Detaylar için xargsman sayfasına bakınız, ancak bu durumda herhangi bir seçeneğe ihtiyacınız yoktur. ( xargsçok sayıda dosyanız varsa istediğiniz şeyi yapamayabilirsiniz, ancak çoğu durumda bunu düşünmek zorunda kalmadan iyi çalışır.)

tailBugünlerde birçok Linux sisteminde kullanılan sürüm sadece -3bir seçenek olarak kabul etmiyor . Kullanmanı gerektiriyor -n3.

Sonunda, catboru hattınızın sonunda faydalı bir şey yapmıyor, bu yüzden de atlanabilir.

Bu komut ne istersen yapmalı.

ls | xargs tail -n3

Güncelleme

@ AtomicHeartFather'ın cevabını okudum tailve sorunun yanlış kısmını koyduğumu fark ettim . Bu durumda, komut olacaktır

ls | tail -n3 | xargs cat

AtomicHeartFather'ın bunun dışında ne yazdığı çok fazla sort.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.