Odpowiedzi:
Może być coś takiego
find . -type f | wc -l
załatwi sprawę. Spróbuj wykonać polecenie z folderu nadrzędnego.
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.
Aby policzyć pliki (nawet pliki bez rozszerzenia) w katalogu głównym bieżącego katalogu, użyj:
ls -l | grep ^- | wc -l
Aby policzyć pliki (nawet pliki bez rozszerzenia) rekurencyjnie z katalogu głównego bieżącego katalogu, użyj:
ls -lR | grep ^- | wc -l
Najszybszym i najłatwiejszym sposobem jest użycie tree
. Jego prędkość jest ograniczona przez terminal wyjściowy, więc jeśli potokujesz wynik tail -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:
$ tree share/some/directory/ | tail -1
558 directories, 853 files
$ tree -L 2 share/some/directory/ | tail -1
120 directories, 3 files
Jeśli jeszcze go nie ma, możesz go pobrać tutaj .
find -type f -printf . | wc -c
Nie licz wyjściowych wierszy find, ponieważ nazwy plików zawierające 99 nowych wierszy będą liczone jako 100 plików.
Użyj tego polecenia dla każdego folderu na ścieżce
for D in *; do echo $D; find $D -type f| wc -l; done
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
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