ls
Komutu seçenekle birlikte kullandığımda, -l
ilk harf dizesi her dosya hakkında bilgi verir ve bu dizedeki ilk harf dosyanın türünü verir. ( d
= dizin, -
= standart dosya, l
= bağlantı vb.)
Dosyaları ilk harfe göre nasıl filtreleyebilirim?
ls
Komutu seçenekle birlikte kullandığımda, -l
ilk harf dizesi her dosya hakkında bilgi verir ve bu dizedeki ilk harf dosyanın türünü verir. ( d
= dizin, -
= standart dosya, l
= bağlantı vb.)
Dosyaları ilk harfe göre nasıl filtreleyebilirim?
Yanıtlar:
Dizinler dışındaki her şeyi grep
şu şekilde filtreleyebilirsiniz :
ls -l | grep '^d'
^
Desen satırın başında olduğunu gösterir. Değiştir d
ile -
, l
hangisi uygunsa, vb.
Elbette belirli türleri doğrudan aramak için diğer komutları kullanabilirsiniz (örneğin find . -maxdepth 1 -type d
) veya ls -l | sort
bu ilk karaktere göre benzer türleri birlikte gruplamak için kullanabilirsiniz , ancak filtrelemek istiyorsanız grep
, çıktıdan yalnızca uygun satırları seçmek için kullanmalısınız .
ls -lL
. -L
bir dizine mi yoksa bir dosyaya mı bağlı olduğunu göstermek için simgeleri takip eder.
Tüm çıktıyı görüntülemek istiyorsanız, ancak benzer türde dosyalar birlikte listelenmişse, çıktıyı her satırın ilk karakterine göre sıralayabilirsiniz:
ls -l | sort -k1,1
Komut ls
, dizin veri yapılarına kaydedilen dosya adları ile ilgilidir . Bu nedenle, bir dosyanın "türü" de dahil olmak üzere dosyanın kendisini gerçekten önemsemez.
Yalnızca adları değil , gerçek dosyalar üzerinde çalışmaya daha uygun bir komuttur find
. Dosya türündeki listenin nasıl filtreleneceğine ilişkin sorunuzu doğrudan yanıtlayan bir seçenek vardır.
Bu, geçerli dizinin aşağıdakilere benzer bir listesini verir ls -l
:
find . -maxdepth 1 -ls
Varsayılan olarak, find
1 olarak arama derinliğini sınırlayarak devre dışı yinelemeli listeleri dizinleri,
Dışarı bırakabilir .
ama dizinleri seçeneklerden önce listelenmesi gerekir göstermek için dahil.
İle -type
, düz dosyalar veya dizinler olarak f
veya olarak ifade edilen dosya türüne göre filtreleyebilirsiniz d
:
find . -maxdepth 1 -type d -ls
-type
Özellikle l
sembolik bağlantılar için başka filtre değerleri vardır . Symlink'lerle
ilgili bir komplikasyon olduğunu unutmayın :
Bu durumda iki tür dosya vardır: l
bir sembolik bağlantıyı ve benzeri bir şey f
, bağlanan dosyanın türünü gösterir. Bunu nasıl ele alacağınızı belirtmek için seçenekler vardır, böylece seçebilirsiniz.
Gönderen man find
:
-type c
File is of type c:
b block (buffered) special
c character (unbuffered) special
d directory
p named pipe (FIFO)
f regular file
l symbolic link; this is never true if the -L option
or the -follow option is in effect, unless the sym‐
bolic link is broken. If you want to search for
symbolic links when -L is in effect, use -xtype.
s socket
D door (Solaris)
ve sembolik bağlantıların kullanımı ile ilgili:
-xtype c
The same as -type unless the file is a symbolic link. For
symbolic links: if the -H or -P option was specified, true
if the file is a link to a file of type c; if the -L option
has been given, true if c is `l'. In other words, for sym‐
bolic links, -xtype checks the type of the file that -type
does not check.
ve
-P Never follow symbolic links. This is the default behav‐
iour. When find examines or prints information a file, and
the file is a symbolic link, the information used shall be
taken from the properties of the symbolic link itself.
-L Follow symbolic links. When find examines or prints infor‐
mation about files, the information used shall be taken
from the properties of the file to which the link points,
not from the link itself (unless it is a broken symbolic
link or find is unable to examine the file to which the
link points). Use of this option implies -noleaf. If you
later use the -P option, -noleaf will still be in effect.
If -L is in effect and find discovers a symbolic link to a
subdirectory during its search, the subdirectory pointed to
by the symbolic link will be searched.
When the -L option is in effect, the -type predicate will
always match against the type of the file that a symbolic
link points to rather than the link itself (unless the sym‐
bolic link is broken). Using -L causes the -lname and
-ilname predicates always to return false.
-H Do not follow symbolic links, except while processing the
command line arguments. [...]
Klasörleri diğer dosya türlerinden sipariş etme konusunda endişeleriniz varsa,
ls --group-directories-first
başka, bence Anthon tarafından cevaplandığı gibi ls -l'den sıralama veya grep yoluyla çıkış yapmalısınız
ls -l | awk '/^d/{print $NF}
awk d ile başlayan her şeyi yakalar. d dizin içindir ve dizin adını listelemek için son alanı yazdırmanız gerekir
ls -l | sort
Bu, sonucu her sonucun alfabetik sırasına göre sıralar. İlk karakter istediğiniz ölçütse, hepsi bu. Dosya adlarına ihtiyacınız varsa yalnızca deneyebilirsiniz:
ls -l | sort | cut -f 2 -d ' '
Ya da benzer bir şey (bu komut boşluk sınırlayıcıyı kullanarak her satırı sıralar ve böler, sonra ikinci grubu döndürür.