0

ディレクトリに .mp3 または .ogg ファイルが含まれなくなった場合に、ディレクトリを再帰的にクリーンアップする次のスクリプトがあります。

  set -u
  find -L $1 -depth -type d | while read dir
  do
    songList=`find -L "$dir" -type f \( -iname '*.ogg' -o -iname '*.mp3' \)` && {
      if [[ -z "$songList" ]]
      then
        echo removing "$dir"
        rm -rf "$dir"
      fi
    }
  done

これは、名前の最後の文字としてスペースがあるディレクトリの場合に失敗することを除いて、うまく機能します。そのfind場合、スクリプトが . 唯一の引数として、パス'./FOO/BAR BAZ '(最後のスペースに注意してください) を持つディレクトリが存在します。

find: `./FOO/BAR BAZ': No such file or directory

(他のスペースはそのまま残されていますが、最後にスペースがなくなっていることに注意してください。)

私はそれが引用のことだと確信していますが、私が試した他のすべての引用方法は動作を悪化させます (つまり、より多くのディレクトリが失敗します)。

4

1 に答える 1