Jak uzyskać listę katalogów linux dla plików zaczynających się od określonej litery, która nie schodzi do podkatalogów?

18

Załóżmy, że znajdujesz się w katalogu, który zawiera wiele plików i wiele podkatalogów.

Chcesz uzyskać listę wszystkich plików zaczynającą się na literę „d”. Ty pisz

ls d*

a dostajesz głównie pliki w podkatalogach (w szczególności pliki w podkatalogach rozpoczynające się od „d”).

Jak wyświetlić tylko nazwy plików i katalogów w bieżącym katalogu?

dggoldst
źródło

Odpowiedzi:

32

Ach, właśnie znalazłem to na 6. czytaniu strony podręcznika. Jest to nie tak rozsądnie nazwany parametr „katalog”

ls -d d* 
dggoldst
źródło
6
Zajęło ci tylko 29 sekund, aby ponownie przeczytać stronę podręcznika i napisać tę odpowiedź? To szybko :-)
balpha
1
Dodatkowo, ls -dd * / pokaże tylko katalogi.
innaM
6
balpha - odkryłem to przed przesłaniem pytania, a potem zdałem sobie sprawę, że jeśli zajmie mi to tak dużo czasu, równie dobrze mogę pomóc przyszłemu poszukiwaczowi w wysłaniu q i a tutaj.
dggoldst
3
Słusznie; nie ma w tym nic złego.
balpha
1
A jednak, CppLearner, to naprawdę działa. Spróbuj.
dggoldst
10

Uważam, że kolejnym interesującym rozwiązaniem jest

ls | grep ^d

Oferuje elastyczność wyrażeń regularnych.

Kuer
źródło
3
I złożoność wyrażeń regularnych! ;-)
Chris Nava,
1
To interesujące rozwiązanie i podoba mi się pomysł używania wyrażeń regularnych, jednak jeśli dodasz dodatkowe parametry do ls, to się zepsuje. Np. „
Ls
Prawda, ale nie wszystkie parametry. ls -a | grep „^ \.” wypisuje wszystkie „ukryte” pliki.
Kuer,
inne ls flagsnie działają podczas korzystania z tego podejścia. np. ls -ltr | grep ^dnie działa. podczas gdy ten sugerowany w @dggoldst odpowiedzi tak.
hitesh israni
3

odnaleźć . -maxdepth 1 -name d * -typ f

Okej, użycie find tutaj jest odrobiną przesady. Tylko trochę.

James Polley
źródło
1
Ale to pomogło mi wymienić wszystkie bezpośrednie katalogi użytkownika konkretnego: find /home/ -maxdepth 1 -type d -user www-data. Dziękuję i +1
Cyril N.
1

ls -ld: Da listę katalogów, bez schodzenia do podkatalogów.

Przykład:

ls -ld Cust*
To polecenie wyświetli listę plików i katalogów, które zaczynają się od Cust.

chelladurai
źródło
1
Jest to zasadniczo to samo, co pięcioletnia akceptowana odpowiedź.
Scott