help-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Sorting directories by size


From: hancooper
Subject: Sorting directories by size
Date: Tue, 24 Aug 2021 12:11:56 +0000

‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Tuesday, August 24, 2021 3:31 AM, Kerin Millar <kfm@plushkava.net> wrote:

> On Tue, 24 Aug 2021 02:21:28 +0000
> hancooper via help-bash@gnu.org wrote:
>
> > I have a directory stored in `dir`. I want to store the names of 
> > directories at a particular level
> > and sort them by size.
> > I have started with listing the directory names in `dlc` and computing the 
> > total number of
> > directories present. But still have to sort `dlc` by size, the with the 
> > biggest first.
> > My initial plan is to use a command such as `du -h | sort -h`.
> > daggr=( -mindepth "$depth" -maxdepth "$depth" )
> > dlc=$( find "$dir" "${daggr[@]}" -type d | tr "\n" " " )
> > ndr=$( echo "$dlc;" | grep -o " " | wc -l )
>
> The last two of these three commands should be jettisoned. Further, you ought 
> to be using an array to store the directory names. As you appear to be using 
> GNU, consider the following.
>
> daggr=(-mindepth "$depth" -maxdepth "$depth")
> mapfile -td '' dlc < <(find "$dir" "${daggr[@]}" -type d -exec du -0 {} + | 
> sort -zrn | cut -z -f2-)
> ndr=${#dlc[@]}
>
> This relies on the fact that GNU du(1), given the -0 option, employs an 
> output format of "%d\t%s\0", <size>, <pathname>.
>
> --
>
> Kerin Millar


I agree with your assessment.  Have seen that I get the following errer

find: ‘’: No such file or directory




reply via email to

[Prev in Thread] Current Thread [Next in Thread]