最初のLinuxコーディング作業です。
私はサーバー上のすべてのフォルダを巡回し、X日(約20日)が経過したすべてのファイルを削除するタイムアウトジョブのスクリプトを作成するように求められました。
私の家Redhatコンピュータで以下のコードをテストしました。
もちろん、このコードを実際に使用する前には多くの恐怖がありました。以下のコードはうまく機能しますが、「X」日以内にファイル(ディレクトリではない)のみを削除するためにも必要です。
システムの何百ものディレクトリと何千ものファイルをダウンロードまたは変更することは不可能です。初めてこのプログラムを実行したときに、顧客はファイルを私たちのサーバーに置いて忘れてしまったので、10,000以上のファイルが削除されると予想しました。 (これは彼らを目覚めさせるでしょう!)
5行目 "elif [ -f "$i" を変更してみました。-a -m時間+21];Then" - ファイルの削除(rm -i "$1")
動作しません。 「[:mtime:binary 演算子が必要です」と表示されます。
別のelifステートメントが必要ですか、または選択基準(「X」日より古いファイルのみ)を1行で機能させることができますか?
パスワード:
#!/bin/bash
print_folder_recurse() {
for i in "$1"/*; do
if [ -d "$i" ]; then
print_folder_recurse "$i"
elif [ -f "$i" ]; then
rm -i $i #(put the -i in there for #testing, it will be removed)
fi
done
}
パス「/go/to/your/happy/place」
echo "Delete path: $path"
print_folder_recurse $path
ありがとうございます。
答え1
find /your/directory -type f -daystart -mtime +20 -delete
-delete
テストを実行するには削除してください。