Ls'yi sahip ve gruba göre nasıl sıralayabilirim?


Yanıtlar:


8

Bunu dene:

ls -l | awk '{print $3, $4, $8}' | sort

Dosya adı boşluk içermemesi koşuluyla kullanıcı adını, grup adını ve dosya adını yazdırır. Alternatif olarak şunları yazabilirsiniz:

ls -l | awk '{print $3, $4, $0}' | sort

Bu, kullanıcı adını, grup adını ve tam ls -lçıktıyı önce kullanıcı adına, sonra grup adına, ardından ls -lönce ne yazdırırsa yazdırır.

Dağıtımınıza bağlı olarak, gerçek sütun numaralarının farklı olabileceğini unutmayın. SUSE ve coreutils 5.2.1 sürümünde benimkini denedim.

Muhtemelen daha iyi, daha ayrıntılı çözümler vardır, ancak bu en basit olanıdır ve çoğu zaman işe yarayacaktır.


1
s / satır numaraları / sütun numaraları /
sonraki duyuruya kadar duraklatıldı.

7

Petersohn'un dediği gibi, şuna benzer bir şey:

  • ls -l | awk '{print $3, $4, $8, $0}' | sort | column -t
    ekledi $8vecolumn -t güzel baskı için

Ya da daha iyisi:

  • ls -l | sort -k 3 - sahibine göre sıralar ve varsayılan olarak bir sonraki alanı (grubu) ve
  • ls -l | sort -k 4,4 -k 3 - gruba ve sonra sahibine göre sıralar
  • ls -l | sort -k 3,3 -k 8 - sahibine ve daha sonra dosya adına göre sıralar

Not: virgül sonlandırıcı alanıdır, bu nedenle 3,3alan 3'ten 3,55'e kadar olan alan 3'te başlar ve biter .


Gruba ve sonra sahibine göre sıralamak için önde gelen boşlukları yok saymak için -b eklemek zorunda kaldım, aksi takdirde liste sahip adının dize uzunluğuna göre sıralanır.
Stefan Schmidt
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.