Czy istnieje sposób na ograniczenie głębokości listy plików rekurencyjnych w systemie Linux?
Obecnie używam polecenia:
ls -laR > dirlist.txt
Ale mam około 200 katalogów i każdy z nich ma 10 katalogów. Zajmie to zbyt długo i pochłonie zbyt wiele zasobów systemowych.
Wszystko, co naprawdę mnie interesuje, to informacje o własności i uprawnieniach dla podkatalogów pierwszego poziomu:
drwxr-xr-x 14 root root 1234 Dec 22 13:19 /var/www/vhosts/domain1.co.uk
drwxr--r-- 14 jon root 1234 Dec 22 13:19 /var/www/vhosts/domain1.co.uk/htdocs
drwxr--r-- 14 jon root 1234 Dec 22 13:19 /var/www/vhosts/domain1.co.uk/cgi-bin
drwxr-xr-x 14 root root 1234 Dec 22 13:19 /var/www/vhosts/domain2.co.uk
drwxr-xrwx 14 proftp root 1234 Dec 22 13:19 /var/www/vhosts/domain2.co.uk/htdocs
drwxr-xrwx 14 proftp root 1234 Dec 22 13:19 /var/www/vhosts/domain2.co.uk/cgi-bin
drwxr-xr-x 14 root root 1234 Dec 22 13:19 /var/www/vhosts/domain3.co.uk
drwxr-xr-- 14 jon root 1234 Dec 22 13:19 /var/www/vhosts/domain3.co.uk/htdocs
drwxr-xr-- 14 jon root 1234 Dec 22 13:19 /var/www/vhosts/domain3.co.uk/cgi-bin
drwxr-xr-x 14 root root 1234 Dec 22 13:19 /var/www/vhosts/domain4.co.uk
drwxr-xr-- 14 jon root 1234 Dec 22 13:19 /var/www/vhosts/domain4.co.uk/htdocs
drwxr-xr-- 14 jon root 1234 Dec 22 13:19 /var/www/vhosts/domain4.co.uk/cgi-bin
EDYTOWAĆ:
Ostateczny wybór polecenia:
find -maxdepth 2 -type d -ls >dirlist
ls -la /var/www/vhosts/*
?Odpowiedzi:
Kasa
-maxdepth
flagafind
Tutaj użyłem 1 jako maksymalnej głębokości poziomu,
-type d
czyli znajdź tylko katalogi, które następniels -ld
wyświetlają zawartość w długim formacie.źródło
-d
opcję dols
.find
część, aby rozwiązać jego główny problem. W każdym razie dzięki, dodaję to.-print0
ixargs -0
dużo. Przykład:find . -maxdepth 1 -type d -print0 | xargs -0 ls -d
Skorzystaj z
find
opcjiW rzeczywistości nie ma
/bin/ls
potrzeby wykonywania;Znajdź ma opcję, która właśnie to:
Aby zobaczyć tylko jeden poziom podkatalogów, którymi jesteś zainteresowany, dodaj
-mindepth
do tego samego poziomu, co-maxdepth
:Użyj formatowania wyjściowego
Gdy wyświetlane szczegóły powinny być inne,
-printf
mogą pokazywać wszelkie szczegóły dotyczące pliku w niestandardowym formacie; Aby wyświetlić symboliczne uprawnienia i nazwę właściciela pliku, użyj-printf
z%M
oraz%u
wformat
.Zauważyłem później, że chcesz uzyskać pełne informacje o własności, w tym grupę. Użyj
%g
w formacie nazwy symbolicznej lub%G
identyfikatora grupy (podobnie jak%U
numerycznego identyfikatora użytkownika)Powinno to dostarczyć ci tylko potrzebnych informacji i odpowiednich plików.
Dam przykład, który pokazuje różne wartości dla użytkownika i grupy:
(Edytowano pod kątem czytelności: wcięty, skrócony ostatni wiersz)
Uwagi na temat wydajności
Chociaż czas wykonywania jest w większości przypadków nieistotny dla tego rodzaju poleceń, wzrost wydajności jest na tyle duży, że warto go wskazać:
Nie tylko oszczędzamy tworzenie nowego procesu dla każdej nazwy - ogromne zadanie - informacja nie musi nawet być czytana, ponieważ
find
już ją zna.źródło
tree -L 2 -u -g -p -d
Drukuje drzewo katalogów w ładnym formacie do głębokości 2 (-L 2). Wydrukuj użytkownika (-u) i grupę (-g) i uprawnienia (-p). Drukuj tylko katalogi (-d). drzewo ma wiele innych przydatnych opcji.
źródło
tree -L 2 xxx/
lubtree -L 2 -d xxx/
w niektórych przypadkach wystarczy.Podczas gry z moją rybą znalazłem łatwe rozwiązanie, które idealnie pasuje do twoich potrzeb.
lub
źródło