Někdy chceme v Linuxu zjistit počet souborů v adresáři. Například zjištění, kolik obrázků je přítomno v adresáři pro nahrávání WordPressu JournalDev.
Existují různé způsoby, jak to udělat, pojďme se podívat na některé běžné scénáře a nejlepší příkaz, jak zjistit počet souborů v adresáři.
1. Najděte počet souborů v adresáři
Můžeme použít příkaz ls spolu s příkazem wc k počítání počtu souborů v adresáři. Pojďme spočítat počet souborů v mém kořenovém adresáři motivu.
# ls 404.php archive.php functions.php inc layouts phpcs.xml.dist screenshot.png single.php webpack LICENSE comments.php header.php index.php package-lock.json postcss.config.js search.php src woocommerce.css Plugins dist home.php js package.json readme.txt sidebar-left.php style.css README.md footer.php images languages page.php rtl.css sidebar.php template-parts # ls -1 | wc -l 34
Pokud se podíváte na obrázek, modře zbarvené položky jsou adresáře. Jsou také zahrnuty jako soubor ve výstupu.
Co když chceme počítat pouze soubory a ne adresáře?
# ls -p | grep -v / | wc -l 24 #
- Příkaz „ls -p“ vypíše názvy adresářů s „/“ na konci.
- Příkaz „grep -v /“ filtruje výstup a tiskne pouze název, který neobsahuje „/“, takže vynechává všechny adresáře.
- Nakonec „wc -l“ spočítá řádky ve výstupu a vytiskne jej.
Podobně, pokud chcete zjistit počet adresářů pouze uvnitř adresáře, použijte níže uvedený příkaz.
# ls -p | grep / | wc -l 10 #
Poznámka:Výše uvedené příkazy nehledají skryté soubory, pokud chcete, aby počet zahrnoval i skryté soubory, použijte volbu „-a“ s příkazem ls.
# ls -a1 | wc -l 41 #
Tento příkaz bude počítat "." a také "..", takže s tím budete muset v případě potřeby počítat ve vašem shell skriptu.
2. Najít počet souborů v adresáři a podadresářích rekurzivně
Výše uvedené příklady jsou dobré pro počítání souborů a adresářů v adresáři. Ale pokud chcete spočítat počet souborů včetně podadresářů, budete muset použít příkaz find.
# find . -type f ./.test_file ./functions.php ./logger/class-logger-writter.php ./logger/class-logger-export.php ./logger/assets/js/base.js ./logger/assets/css/base.css ./logger/assets/css/base.less ./logger/assets/css/base.css.map ./logger/class-logger-reader.php ./class-protector.php ./class-anti-spam-plugin.php # find . -type f | wc -l 11 #
- Příkaz find „-type f“ se používá k vyhledání běžných souborů.
- Tento příkaz bude ignorovat všechny adresáře, soubory „.“ a „..“. Do výstupu však zahrne skryté soubory.
- Příkaz „wc -l“ spočítá celkový počet řádků a vytiskne jej, čímž nám poskytne počet souborů.
Odkazy:
- manuální stránka příkazu wc
- najít manuálovou stránku příkazů