検索出力のファイル名からスペースを削除する

検索出力のファイル名からスペースを削除する

指定されたルートディレクトリの下に使用されているディレクトリサイズを一覧表示したいと思います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 {} \;

おすすめ記事