polecenie ls w Linuksie służy do wyświetlania zawartości dowolnego katalogu.
domyślnie wyświetla całą zawartość, czy to plik, katalog, link, Czy nazwany potok.
ale co, jeśli chcesz wyświetlać tylko katalogi? Jak ty to robisz?
jak wszystko w Linuksie, istnieje kilka sposobów na wykonanie tego samego zadania. Wyświetlanie tylko katalogów nie jest inne:
- Ls-D */
- ls-l | grep '^d’
- znajdź . – maxdepth 1-typ d
- echo * /
- drzewo-D-L 1
nie martw się. Wyjaśnię wszystko szczegółowo. Oto zawartość katalogu, którego użyję w przykładach tutaj:
użyj polecenia ls do wyświetlania tylko katalogów
zawsze dobrze jest zrobić to ze znanym poleceniem ls, ponieważ jest to polecenie używane do wyświetlania zawartości katalogu.
aby wyświetlić tylko podkatalogi, użyj opcji -d
z poleceniem ls w ten sposób:
ls -d */
oto wynik, który pokazuje:
Documents]$ ls -d */another_dir/ my_dir/
dlaczego */
? Ponieważ bez niego ls -d
zwróci tylko nazwę katalogu. Opcja -d
wymienia katalogi, a nie ich zawartość (w tym plik, katalogi itp.).
*/
to wzór. *
wyświetla całą zawartość (w tym zawartość podkatalogów), a /
ogranicza wzorzec do katalogów.
to zdjęcie całkiem dobrze przedstawia różnicę.
możesz połączyć go z opcją długiej listy -l
i większością innych opcji:
Documents]$ ls -ld */drwxrwxr-x. 1 abhishek abhishek 16 Nov 7 18:22 another_dir/drwxrwxr-x. 1 abhishek abhishek 44 Nov 7 18:22 my_dir/
jeśli nie chcesz, aby końcowy ukośnik (/) na końcu nazw katalogów, możesz użyć polecenia Wytnij, aby go wyciąć:
Documents]$ ls -ld */ | cut -f1 -d'/'drwxrwxr-x. 1 abhishek abhishek 16 Nov 7 18:22 another_dirdrwxrwxr-x. 1 abhishek abhishek 44 Nov 7 18:22 my_dir
Lista tylko podkatalogów w określonym katalogu
powyższe polecenie działa w bieżącym katalogu. Co zrobić, jeśli nie jesteś w tym samym katalogu?
w tej sytuacji możesz użyć */
na końcu ścieżki katalogu z ls -d
:
ls -d Path/To/Dir/*/
oto przykład, w którym Wyprowadzam się z katalogu dokumentów, a następnie wymieniam tylko katalogi wewnątrz katalogu dokumentów:
~]$ ls -ld Documents/*/drwxrwxr-x. 1 abhishek abhishek 16 Nov 7 18:22 Documents/another_dir/drwxrwxr-x. 1 abhishek abhishek 44 Nov 7 18:22 Documents/my_dir/
zauważyłeś, że nie wyświetla ukrytego katalogu? To jedna z wad tej metody. Możesz użyć ls -d .*/
, aby wyświetlić ukryte katalogi, ale wyświetla tylko Ukryte katalogi.
użyj kombinacji polecenia ls i grep
zawsze możesz polegać na starym, dobrym poleceniu grep do filtrowania danych wyjściowych dla określonej zawartości.
jeśli długo wypisujesz zawartość, możesz zidentyfikować katalogi, ponieważ zaczynają się od d
.
możesz użyć grep do filtrowania zawartości zaczynającej się od d:
ls -l | grep '^d'
ale to daje o wiele więcej pól niż tylko nazwy katalogów:
Documents]$ ls -l | grep '^d'drwxrwxr-x. 1 abhishek abhishek 16 Nov 7 18:22 another_dirdrwxrwxr-x. 1 abhishek abhishek 44 Nov 7 18:22 my_dir
użyj polecenia find do wyświetlania tylko katalogów
oto jak użyć polecenia find do wyświetlania tylko podkatalogów:
find directory_path -maxdepth 1 -type d
mam nadzieję, że znasz polecenie Znajdź. I tak to wyjaśnię.
w przypadku type d
polecenie find prosi o szukanie tylko katalogów.
za pomocą maxdepth 1
prosisz polecenie find o zachowanie wyszukiwania tylko na bieżącym poziomie (i nie wchodzenie do podkatalogów).
Documents]$ find . -maxdepth 1 -type d../my_dir./another_dir./.my_hidden_dir
jak widać na powyższym wyjściu, pokazuje również ukryty katalog.
użyj polecenia tree do wyświetlania tylko katalogów
jeśli twoim celem jest wyświetlanie tylko katalogów, możesz również użyć polecenia tree.
domyślnie polecenie drzewo daje pełną strukturę katalogów. Możesz zmodyfikować go tak, aby wyświetlał tylko katalogi i tylko na bieżącym poziomie.
tree -dai -L 1
- d-szukaj tylko katalogów
- a-Szukaj również ukrytych plików i katalogów
- i-usuń strukturę drzewa z wyświetlacza
- L 1-nie wchodź do podkatalogów
oto wyjście:
Documents]$ tree -dai -L 1.another_dirmy_dir.my_hidden_dir3 directories
używanie polecenia echo do wyświetlania katalogów
mało prawdopodobny kandydat? Zdziwisz się, że komenda echo w Linuksie może być również używana do wyświetlania zawartości katalogu. Spróbuj użyć echo *
i przekonaj się sam.
podobnie jak polecenie ls, możesz również użyć wzorca */
, aby wyświetlić listę tylko katalogów w bieżącym katalogu roboczym.
echo */
oto wynik, który jest identyczny z tym, co otrzymałeś z poleceniem ls -d
:
może być więcej sposobów wyświetlania tylko katalogów, a nie Plików. W rzeczywistości metody omówione tutaj mogą mieć pewne „jeśli” I ” ale ” w oparciu o to, czego szukasz.
jeśli twoim celem jest tylko wyświetlanie katalogów, większość poleceń, które omówiłem, zadziała. Jeśli chcesz coś bardziej konkretnego, jak tylko uzyskanie nazwy katalogów z ukośnika itp, będziesz musiał zrobić trochę formatowania na własną rękę.
mam nadzieję, że ta wskazówka dotycząca Linuksa okaże się pomocna. Pytania i sugestie są zawsze mile widziane.