Soru Powershell ile bir projedeki satır sayısını bulun


Sahip olduğum bir projenin tüm kaynak dosyalarındaki toplam satır sayısını saymanın bir yolunu bulmaya çalışıyorum. Borulamayı denedim dir -r -name içine measure-object -lineAma bu sadece sahip olduğum dosyaların sayısını sayar.

Bunu yapacak bir senaryo var mı?


25
2018-02-18 14:44


Menşei




Cevaplar:


Get-ChildItem -Filter "*.cs" -Recurse | Get-Content | Measure-Object -line

27
2018-02-18 17:13



Get-ChildItem * .cs -Recurse dizini yeniden etkinleştirir, ancak (en azından powershell 1.0'da) yalnızca geçerli dizinde .cs ile biten dosyaları gösterir. - Dan Monego
Teşekkürler! Evet, çünkü bu durumda .cs, 'filter' parametresi yerine 'path' ile eşleşir. Düzeltmek için şunları yazabilirsiniz: Get-ChildItem. * .cs -Recurse… veya Get-ChildItem -Filter ".cs "-Recurse… - Alex


Cevaplayan herkese teşekkürler. Bunu hayata geçirme şeklim şu oldu:

dir . -filter "*.cs" -Recurse -name | foreach{(GC $_).Count} | measure-object -sum

11
2018-02-18 15:47



İşe yaramıyor ... - dan-gph
dir -filtre "* .cs" -Recurse | foreach {(gc $ _). Saymak} | ölçü nesnesi -sum - dan-gph
Çalışmak için tamir edildi. Seninkilerin de işe yaramadığını göstermeliyim. - Dan Monego
D'oh. Ve ben de çok dikkatli davranıyordum. Benimki '-filtre' '-include' olarak değiştirilirse çalışır. Filtre neden işe yaramadığını anlayamıyorum. - dan-gph
"Kopyala ve yapıştır, arkadaşın" diyecekti, ama şimdi söylediysem aptal gibi görünecektim :) - dan-gph


Get-ChildItem . -Include *.txt -Recurse | foreach {(Get-Content $_).Count}

Diğer adlarla biraz yoğunlaştırılmış:

GCI . -Include *.txt -Recurse | foreach{(GC $_).Count}

Buna benzer sonuçlar verecek:

Lines Words               Characters              Property
----- -----               ----------              --------
   21
   40
   29
   15
  294
   13
   13
  107

DÜZENLEME: Alt klasörlerde tekrarlamak için değiştirildi.

EDIT 2: Tedbir-Nesnenin kaldırılmış kullanımı.


8
2018-02-18 15:46





dir ** txt -recurse | Fullname, @ {name = "LineCount"; expression = {@ (get-content $ _. fullname) .count}} öğesini seçin.


5
2018-06-11 13:35



Bu komut benim için çalışmıyor. Birkaç tane "Select-Object:" 'Path' parametresine argüman bağlanılamıyor, çünkü boş. " hatalar. - aphoria
Size oy veriyorum çünkü seçim komutunu bilmiyordum ve bunun hakkında bir şeyleri duydum. Yine de, sen kullandın $__ yerine $_, kullandın dir *.txt yerine dir -filter "*.txt"Ve sonucun hala bittiğimde her şeyi eklememi sağlıyor. - Dan Monego
Bu Dan için üzgünüm, editör $ _ göstermedi, ben de iki katına çıktım, oy verdiğiniz için teşekkürler! - Shay Levy


Ben sadece biraz zaman aşımına uğradım ve bu komutun gerçekten tüm c # dosyalarını yinelemeli olarak ölçtüğünü buldum:

Get-ChildItem -Filter *.cs -Recurse | Get-Content | Measure-Object -Word -Line -Character


2
2018-02-24 22:30





Dosya adını ve satır sayısını yazdırır:

Get-ChildItem -re -in "*.cs" |
Foreach-Object { 
    $fileStats = Get-Content $_.FullName | Measure-Object -line
    $linesInFile = $fileStats.Lines
    Write-Host "$_=$linesInFile" 
} 

0