Chcę znaleźć całkowitą liczbę plików w folderze i wszystkich jego podfolderach.
command-line
find
topless
źródło
źródło
find . -type f -ls | wc -l
find . -type f -print0 | tr -d -c '\0' | wc -c
find . -type f -printf . | wc -c
- Przyjmuję druk dla mojego rozwiązania zamiast echa -exec.Użyj
tree
polecenia. Może być konieczne zainstalowanietree
pakietu.Spowoduje to wyświetlenie listy wszystkich plików i folderów w danym folderze oraz podsumowanie na końcu.
źródło
Aby policzyć pliki (nawet pliki bez rozszerzenia) w katalogu głównym bieżącego katalogu, użyj:
Aby policzyć pliki (nawet pliki bez rozszerzenia) rekurencyjnie z katalogu głównego bieżącego katalogu, użyj:
źródło
Najszybszym i najłatwiejszym sposobem jest użycie
tree
. Jego prędkość jest ograniczona przez terminal wyjściowy, więc jeśli potokujesz wyniktail -1
, otrzymasz natychmiastowy wynik. Możesz także kontrolować, na jakim poziomie katalogu lubisz wyniki, korzystając z-L
opcji. Aby uzyskać kolorowe wydruki, użyj-C
. Na przykład:Jeśli jeszcze go nie ma, możesz go pobrać tutaj .
źródło
Nie licz wyjściowych wierszy find, ponieważ nazwy plików zawierające 99 nowych wierszy będą liczone jako 100 plików.
źródło
Użyj tego polecenia dla każdego folderu na ścieżce
źródło
find wydaje się być szybszy niż drzewo, więc użyłem poniżej, aby policzyć pliki w każdym katalogu bieżącego katalogu roboczego (ignorując pliki w CWD), umożliwiając katalogom spacje:
ls -d */ | while read dir_line do echo -n "$dir_line :" find "$dir_line" -type f | wc -l done
źródło
ls
jest bardzo złym pomysłem.Możesz użyć
find . | wc -l
find .
wyświetli listę wszystkich plików i folderów oraz ich zawartość, zaczynając od bieżącego folderu.wc -l
liczy wyniki znalezieniaźródło
Sam wybrałbym tę opcję:
źródło