数値グループを含むディレクトリを削除するスクリプトを作成したいと思います。
これまでグループを捕捉して分析した。
#!/bin/bash
re='^[0-9]+$'
for x in `/usr/bin/ls -l /var/indexes | sort -k3,3 | tr -s " " | cut -f3 -d " "`
do
if [[ $x =~ $re ]] ; then
echo "found one $x"
fi
done
問題は、ディレクトリの実際の名前が別の列にあることです。
以下は、ls出力の1行です。
drwxr-sr-x. 3 3966 root 4096 Oct 20 16:29 dirname
したがって、lsの結果を繰り返して、グループ(この場合は3966)とディレクトリ名(この場合はdirname)をキャプチャして、空のグループが見つかった場合に削除するrm -rfコマンドを構成できる必要があります。
どうすればいいですか?
よろしくお願いします。
ベストアンサー1
-nogroupフラグでfindを使用する方が簡単ではありませんか?たとえば、
find /var/indexes -nogroup
lsを中心にスクリプトを作成するには、awkが列を選択するために使用するツールです。