私はうまく機能するFTPアカウント(刑務所の仮想ユーザーを持つvsftpd)を作成するための自動化されたシステムを持っていますが、まだ使用されていないアカウントの手動クリーンアップに頼っています。
古いアカウントの私の定義は、30日未満のファイルやフォルダが含まれていないアカウントです。
これまで私はこれを実行できます:
find /home/vsftpd -ctime +30 |awk -F'/' '{print $4}' |sort -u
これにより、フォルダを含むリストが表示されます。最後のもの30日を過ぎた文書。-ctime -30
必要な情報を得るためにリストを否定する重いループを実行して実行することもできます。
(適度に合理的な)単一のライナーでこれを行う方法があればと思いますが、この時点で私の find-foo は失敗します。誰でも助けることができますか?
ベストアンサー1
私は(GNU findを使って)次のことをします:
cd /home/vsftpd &&
for i in */; do
if ! find "./$i" -ctime -30 -print -quit | grep -q .
echo no file touched in the past 30 days in "$i"
fi
done
(アカウントが/home/vsftpdより1レベル下にあると仮定)
zshを使う:
stale() (: $REPLY/**/*(NDm-30e:'exit 1':))
cd /home/vsftpd &&
echo those are stale: *(/+stale)