Na komputerze z systemem Windows 7 chciałbym w szybki sposób określić liczbę wierszy we wszystkich plikach w drzewie katalogów dla plików o danym rozszerzeniu. Czy istnieje jakiś dobry sposób, aby to zrobić?
Na komputerze z systemem Windows 7 chciałbym w szybki sposób określić liczbę wierszy we wszystkich plikach w drzewie katalogów dla plików o danym rozszerzeniu. Czy istnieje jakiś dobry sposób, aby to zrobić?
Odpowiedzi:
PowerShell jest opcją.
PS D:\Scratch\maweeras\superuser> dir -Recurse *.txt | Get-Content | Measure-Object -Line
Lines Words Characters Property
----- ----- ---------- --------
168
dir -Recurse *.txt
będzie przetwarzał tylko katalogi, których nazwy pasują *.txt
, jednocześnie wyprowadzając wszystkie pliki, które znajdzie w tych katalogach i ich poddrzewach. Ale OP chciał przetworzyć wszystkie katalogi, wyprowadzając tylko te pliki, które pasują *.txt
. Aby to zrobić, użyłbyś dir -Recurse -Include *.txt
.
Get-ChildItem
(który dir
jest aliasem) stwierdza, że Get-ChildItem –Path "*.txt" -Recurse
to wszystko, co jest potrzebne, aby uzyskać „wszystkie pliki .txt w bieżącym katalogu i jego podkatalogach”. link: technet.microsoft.com/library/hh849800.aspx
dir -Recurse -Include *.txt
wydaje się mieć pożądane wyniki w obu tych wersjach.
Aby rozwinąć odpowiedź maweeras powyżej (przepraszam za mało powtórzeń, aby skomentować), możesz wyszukać wiele rozszerzeń plików, przekazując tablicę rozdzielaną przecinkami do -Include.
Na przykład:
dir -Recurse -Include *.ts,*.tsx -Exclude *node_modules* | Get-Content | Measure-Object -Line
Korzystam z bezpłatnego i lite narzędzia http://www.locmetrics.com
Następujące działa w cmd:
for %f in (*.TXT) do find /v /c "" "%f"
Lub w [.bat]:
for %%f in (*.TXT) do find /v /c "" "%%f"