For at få en distribution af filstørrelser rekursivt i en bestemt mappe på et filsystem med millioner af filer ved hjælp af bash og awk, kan du følge disse trin:
find /sti/til/mappen -type f
Dette vil finde alle filer (-type f) rekursivt i den angivne mappe.
find /sti/til/mappen -type f -exec stat --format="%s" {} \;
Dette vil bruge stat-kommandoen til at få størrelsen (%s) af hver fil.
find /sti/til/mappen -type f -exec stat --format="%s" {} \; | awk '{size[$1]++} END {for (s in size) print s, size[s]}'
Dette vil bruge awk til at tælle forekomsterne af hver filstørrelse og derefter udskrive distributionen.
Her er en mere detaljeret forklaring af awk-delen:
size[$1]++
: Dette opretter en associative array, hvor nøglen er filstørrelsen, og værdien er antallet af forekomster.
END {for (s in size) print s, size[s]}
: Dette udskriver hver filstørrelse og dens tilsvarende antal forekomster, når alle inputlinjer er behandlet.
Ved at følge disse trin kan du effektivt få en distribution af filstørrelser rekursivt i en bestemt mappe på et filsystem med millioner af filer ved hjælp af bash og awk.
Har du brug for hjælp til filhåndtering eller scripting? Med Handyhand kan du nemt oprette din opgave gratis og få bud fra dygtige hjælpere på få minutter. Gør dit projekt lettere og få professionel assistance, når du har brug for det!