Jak policzyć liczbę plików w katalogu, ale nie rekurencyjnie


30

Proste pytanie, jestem pewien. Widziałem odpowiedź, która pokazuje, jak to zrobić, w tym podkatalogi, ale chcę wiedzieć, ile plików (nie folderów) znajduje się tylko w bieżącym katalogu. Dzięki.

Odpowiedzi:


60
ls -F |grep -v / | wc -l
  1. ls -F wyświetl wszystkie pliki i dołącz do wpisów (jeden z * / => @ |)
  2. grep -v /zachowaj wszystkie ciągi, które nie zawierają ukośnika
  3. wc -l policzyć linie

Lista wszystkiego oprócz katalogów.
Thom

Naprawdę doceniam to, że dokonałeś tego i wyjaśniłeś sekcje, dziękuję za działającą i dobrze wyjaśnioną odpowiedź!
bcsteeve,

1
Podczas gdy wszystkie odpowiedzi rozwiązują mój problem, wybieram ten jako udokumentowany i najłatwiejszy do zrozumienia. Ale dzięki wszystkim!
bcsteeve,

15

Wypróbuj ten oneliner:

find -maxdepth 1 -type f | wc -l

To dobrze, tylko pliki i nic więcej :-)
Thom

Pomija to linki i urządzenia znaków specjalnych.
ojblass

Wszystkie odpowiedzi tutaj działają świetnie! Więc najpierw DZIĘKUJĘ. Po drugie ... jak wybrać?
bcsteeve,

6

Spróbuj tego

ls -al | grep ^[-] | wc -l
  1. ls -al - wyświetla listę wszystkich plików z długim formatem listowania
  2. grep ^[-] - wyszukaj ciąg rozpoczynający się od „-”, który oznacza symbol zwykłego pliku, gdy plik listy ma ls -al
  3. wc -l - policz linie

Co z miękkimi linkami? Co z twardymi połączonymi plikami?

Fajny, tylko pliki i linki, nic więcej.
Thom

W przypadku linku miękkiego / twardego jut należy zastąpić -przezl
andr3w

Naprawdę doceniam to, że dokonałeś tego i wyjaśniłeś sekcje, dziękuję za działającą i dobrze wyjaśnioną odpowiedź!
bcsteeve,

2

Chcę tylko dodać odpowiedź Thoma, ponieważ lubię grać z Bash . Oto jest:

echo "Directory $(pwd) has $(ls -F |grep -v / | wc -l) files"

Poniżej znajduje się przykładowy wynik mojego /datakatalogu:

Directory /data has 580569 file(s).

I poniżej moje wyjaśnienia:

  1. echo double-quoted-message wydrukuje pożądaną wiadomość.
  2. $(any-desirable-valid-command)wewnątrz podwójnie cytowanego komunikatu echowydrukuje wynik wykonania powiązanego polecenia.
  3. pwd wydrukuje bieżący katalog.
  4. ls -Fsłuży do wyświetlania wszystkich plików i dołączania wskaźnika (jednego z * / => @ |) do wpisów. Skopiowałem to z odpowiedzi Thoma .
  5. grep -v /to polecenie do wyszukiwania zwykłego tekstu, -v /parametr zachowuje wszystkie ciągi, które nie zawierają ukośników.
  6. wc -l wydrukuje liczenie linii.

Wiem, że to pytanie ma 3 lata, po prostu nie mogę powstrzymać się od dodania kolejnej odpowiedzi.


2

Jeśli treezainstalowałeś w swoim systemie, możesz użyć tego polecenia:

tree -L 1 /path/to/your/directory | tail -n 1

Pokazuje liczbę plików i katalogów w tym katalogu.

-L n pokazuje głębokość wyszukiwania.

Możesz zainstalować za treepomocą sudo apt-get install tree.


-3

Aby policzyć całkowitą liczbę plików z określonym rozszerzeniem, możesz wpisać:

ls|grep jpg |wc -l
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.