アーカイブ/ごみ箱に保存するフォルダを簡単に見つけ、それらを自動化する簡単な方法は、長年使用していないフォルダを選択することです。フォルダ自体は含まれているファイルとは異なる変更日を持つ可能性があるため、これを実行する* nixコマンドがすでに存在するかどうか疑問に思います。
そうでない場合は、特定の日付より前に更新またはアクセスされていないディレクトリを探してから、その内容を繰り返し繰り返し、その日付以降にアクセスまたは変更されていないことを確認するスクリプトを作成できます。
しかし、そのようなツールがすでに存在する場合、私は車輪を再発明しません。
答え1
find /some/where -type d \( -atime +1234 -o -mtime +1234 \) -print | ...
答え2
ディレクトリのアクセス時間はほとんど役に立ちません。アクセス時間は、最初に実行されたとき、またはls
ディレクトリfind
で更新されます。
長い間アクセスしていないファイルを簡単に見つけることができます。
find . -type f -atime +999 -print
長い間ファイルにアクセスしていないディレクトリにのみ興味がある場合は、ディレクトリを参照するコマンドとディレクトリのファイルを参照するコマンドをfind
一緒に使用できます。find
find . -type d -exec sh -c '
recent=$(find "$0" -mindepth 1 -maxdepth 1 ! -type f -atime +999 -print | head -n 1)
if [ -z "$recent" ]; then printf %s\\n "$0"; fi
' {} +
このコードスニペットは最近一般ファイルにアクセスしていませんが、最近アクセスしたファイルを含むディレクトリを印刷できます。ディレクトリを巡回するためにfind
個別に削除して、多くの繰り返し-maxdepth 1
ディスクアクティビティを引き起こさない限り、これらのエントリを個別にスキップすることは容易ではありません。これは、手動でディレクトリナビゲーションを実行して最近アクセスされていないファイルのみを含むディレクトリを追跡するテストされていないbashスクリプトです。
#!/bin/bash
shopt -s dotglob
explore () {
local entry keep=
for entry in "$1/"*; do
if [ -L "$entry" ]; then
:
elif [ -d "$entry" ]; then
if explore "$entry"; then
keep=1 # Keep this directory, it contains kept directories
fi
elif [ -f "$entry" ]; then
if [ -z "$(find "$entry" -atime +999 -print)" ]; then
keep=1 # Keep this directory, it contains a recently-accessed file
fi
fi
done
if ((!keep)); then
echo "$1"
return 1
fi
return 0
}
explore .