Wydaje się, że najłatwiejszym sposobem find /path/to/search -ls | wc -l
Znajdź służy do przechodzenia przez wszystkie pliki i foldery.
-ls
wyświetlić (wydrukować) wszystkie nazwiska. Jest to ustawienie domyślne i jeśli go nie uwzględnisz, nadal będzie działać tak samo prawie we wszystkich systemach. (Prawie, ponieważ niektóre mogą mieć inne ustawienia domyślne). Dobrym nawykiem jest jednak jawne używanie tego.
Jeśli tylko użyjesz tej find /path/to/search -ls
części, wydrukuje ona wszystkie pliki i katalogi na ekranie.
wc
to liczba słów. -l
opcja informuje go policzyć liczbę wierszy.
Możesz go używać na kilka sposobów, np
- plik testowy wc
- plik testowy kota | toaleta
Pierwsza opcja pozwala wc otworzyć plik i policzyć liczbę wierszy, słów i znaków w tym pliku. Druga opcja robi to samo, ale bez nazwy pliku czyta ze standardowego wejścia.
Możesz łączyć polecenia za pomocą potoku |
. Dane wyjściowe z pierwszego polecenia będą przesyłane potokowo do danych wejściowych drugiego polecenia. Dlatego find /path/to/search -ls | wc -l
używa find do wyświetlenia wszystkich plików i katalogu i podaje dane wyjściowe do wc. Wc następnie zlicza liczbę linii.
(Inną alternatywą byłoby `ls | wc ', ale find jest znacznie bardziej elastyczny i jest dobrym narzędziem do nauki.)
[Edytuj po komentarzu]
Przydatne może być połączenie find i exec.
Np. Wyświetli find / -type d ! \( -path proc -o -path dev -o -path .snap \) -maxdepth 1 -exec echo starting a find to count to files in in {} \;
listę wszystkich katalogów w /, zablokuje niektóre, których nie chcesz przeszukiwać. Możemy wywołać poprzednie polecenie na każdym z nich, uzyskując sumę plików na folder w /.
Jednak:
- Używa to rozszerzenia specyficznego dla GNU -maxdepth.
Będzie działał na Linuksie, ale nie tylko na każdym systemie uniksowym.
- Podejrzewam, że możesz chcieć mieć pewną liczbę plików dla każdego podkatalogu.