주어진 루트 디렉토리 아래에 사용된 디렉토리 크기를 나열하고 싶습니다 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 {} \;