この投稿は更新されています。解決策については以下をご覧ください。
常に存在するとは限らないファイルの存在についてフォルダーを確認する必要があります。
私は次のようなスクリプトを作成しました:
#!/ビン/sh 真の間; 行う file=/パス/to/ファイル if [[ "$file" = *ファイル名* ]] それから echo "$ファイルが存在します" そうしないと echo "存在しません" フィ 睡眠 3 終わり
ファイルを削除または移動するまで、「$ file is present」が継続的に繰り返されるという事実を除いて、完全に機能します。"echo "$file is present" の後に挿入してアラートを停止し、このファイルのチェックを続行するには、どのコマンドを使用できますか (たとえば、ファイルが再び利用可能になったとき)。
ありがとうございました。
8時間まで回答を追加できないため、ここに私の解決策を投稿します:
とにかく、私はこのスクリプトを使用して解決しました:ファイルの時間を現在の日付と比較し、「タッチ」を使用して日付を10秒前に変更します:
#!/ビン/sh 真実でありながら 行う cd $(dirname "$0") current=$(pwd) cd /ブート/ホーム/ダウンロード last=$(ls -t | head -n1) name=$(basename "$last") filedate=$(date -r "$last" +%G%m%d%H%M%S) currentdate=$(date +%G%m%d%H%M%S) if [ "$filedate" -eq "$currentdate" ] それから echo "$name" "存在します" touch -d '-10 秒' "$name" フィ 終わり
ファイル名に関係なく、尊敬され、独立して動作するようになりました! すべての新しいファイルについて一度だけ警告し、そのフォルダーを監視し続けます:-)
スクリプトの全履歴を保持するために、以下に iamauser のスクリプトがあります。私はこのスクリプトを少し改良しました: フォルダ内のすべての新しいファイル (名前、種類などから独立して) について警告し、削除されたファイルについても警告します:-)
#!/ビン/バッシュ cd /ブート/ホーム filename=$(ls -t | head -n1) tstamp=$(stat --print "%Y" "$filename") 真の間; 行う prev=$(ls "/boot/home/Downloads" | tr '\n' '\n' > /tmp/prev.txt) check=$(ls -t /boot/home/Downloads | head -n1) もしも [ !-d "$ファイル名" ]; それから after=$(ls "/boot/home/Downloads" | tr '\n' '\n' > /tmp/after.txt) echo "存在しません"; 睡眠 5; elif [[ "$filename" == "$filename" && $tstamp -ne $(stat --print "%Y" "$filename") ]]; それから 睡眠 2 difference=$(comm -2 -3 "/tmp/after.txt" "/tmp/prev.txt">/tmp/Diff.txt) lost=$(cat /boot/common/cache/tmp/Diff.txt) alert --idea "/boot/home/Downloads: $check は、このフォルダー内の最新のファイルです。"; alert --idea "/boot/home/Downloads: $lost が削除されました。"; tstamp=$(stat --print "%Y" "$filename") そうしないと 睡眠 3; フィ 終わり