指定されたルートディレクトリの下に使用されているディレクトリサイズを一覧表示したいと思いますdu -hs
。問題は、ディレクトリ名にスペースが含まれている場合、du
コマンドが名前の各単語を完全なディレクトリ名として扱うことです。
出力を引用してこの問題を解決しようとしましたが、xargs
出力は同じです。
#!/bin/bash
root="$1"
echo "Searching in $root"
for d in $(find $root -maxdepth 1 -type d | xargs -i echo "'{}'")
do
#
# the root directory can take a long time so let's skip it
#
if [ "$d" != "$root" ]
then
echo "Looking at directory $d"
echo $(du -hs "$d")
fi
done
答え1
説明した問題のため繰り返し出力は推奨されません。find
。代わりに、-exec
そのバージョンが利用可能な場合は、このオプションを使用する必要がありますfind
。
find "$root" -maxdepth 1 -type d -exec du -hs {} \;
このディレクトリを除外するには、$root
以下を追加しますmindepth
。
find "$root" -mindepth 1 -maxdepth 1 -type d -exec du -hs {} \;