ディレクトリに .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
(他のスペースはそのまま残されていますが、最後にスペースがなくなっていることに注意してください。)
私はそれが引用のことだと確信していますが、私が試した他のすべての引用方法は動作を悪化させます (つまり、より多くのディレクトリが失敗します)。