30日以内のコンテンツを含むトップレベルフォルダのリスト

30日以内のコンテンツを含むトップレベルフォルダのリスト

私はうまく機能する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)

おすすめ記事