찾기 출력의 파일 이름에서 공백 제거

찾기 출력의 파일 이름에서 공백 제거

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

관련 정보