Tüm dosyaları bulmayı, dosya adlarını kaldırmayı, her dosya için yalnızca dizin adını içeren bir satır bırakmayı ve ardından her dizinin görünme sayısını saymayı düzenleyebilirsiniz:
find . -type f |
sed 's%/[^/]*$%%' |
sort |
uniq -c
Buradaki tek sorun, herhangi bir dosya adınız veya bir satırsonu karakteri içeren dizin adlarına sahip olmanızdır ki bu pek olası değildir. Dosya adlarında veya dizin adlarında yeni satırlar hakkında gerçekten endişelenmeniz gerekiyorsa, onları bulmanızı ve yeni satırlar içermemeleri için düzeltmenizi öneririm (ve suçlu tarafı kendi yollarının hatasına sessizce ikna edin).
Geçerli dizinin her bir alt dizinindeki dosyaların sayısıyla ilgileniyorsanız, herhangi bir alt dizindeki dosyaları ve hemen alt dizindeki dosyalarla birlikte saymak istiyorsanız, sed
komutu yalnızca yazdıracak şekilde uyarlarım üst düzey dizin:
find . -type f |
sed -e 's%^\(\./[^/]*/\).*$%\1%' -e 's%^\.\/[^/]*$%./%' |
sort |
uniq -c
İlk kalıp, adın başlangıcını, noktayı, eğik çizgiyi, bir sonraki bölü çizgisine kadar olan adı ve eğik çizgiyi yakalar ve çizgiyi yalnızca ilk bölümle değiştirir, bu nedenle:
./dir1/dir2/file1
ile değiştirilir
./dir1/
İkinci değiştirme, dosyaları doğrudan geçerli dizinde yakalar; sonunda bir eğik çizgi yoktur ve bunların yerini alır ./
. Sıralama ve sayma, yalnızca adların sayısına göre çalışır.
./
mu arıyorsunuz?