C-Shell Script til "du -sh" Output for Undermapper Uden Rodmappefiler

Hvordan kan man i C-Shell få samme output som "du -sh ./*" uden at liste filerne i rodmappen, altså kun en liste over undermapper i ./ og størrelsen af alt deres indhold?

For at få samme output som "du -sh ./*" i C-Shell, men kun for undermapperne i den aktuelle mappe og uden at inkludere filer i rodmappen, kan du bruge et script, der anvender `find` til at liste undermapper og `du -sh` til at vise deres størrelse.

Hvordan kan man i C-Shell få samme output som "du -sh ./*" uden at liste filerne i rodmappen, altså kun en liste over undermapper i ./ og størrelsen af alt deres indhold?

For at opnå samme output som "du -sh ./*" i C-Shell, men kun for undermapperne i den aktuelle mappe og uden at inkludere filer i rodmappen, kan du bruge følgende fremgangsmåde:

  1. Brug kommandoen find til at liste alle undermapper i den aktuelle mappe.
  2. Filtrer outputtet for kun at inkludere mapper.
  3. Brug du -sh på hver af de fundne undermapper for at få størrelsen af deres indhold.

Her er et eksempel på en C-Shell script, der gør dette:

#!/bin/csh
foreach dir (`find . -maxdepth 1 -type d ! -name '.'`)
    du -sh $dir
end

Forklaring af scriptet:

  • find . -maxdepth 1 -type d ! -name '.': Finder alle mapper i den aktuelle mappe (.) uden at gå dybere end én niveau (-maxdepth 1) og ekskluderer den aktuelle mappe selv (! -name '.').
  • foreach dir (`find ...`): Itererer over hver fundne mappe.
  • du -sh $dir: Udfører du -sh på hver fundne mappe for at få størrelsen af deres indhold.

Dette script vil give dig en liste over undermapperne i den aktuelle mappe og størrelsen af alt deres indhold, uden at inkludere filer i rodmappen.