フォルダから7日より古い4桁の数字のファイルを検索するBASHスクリプト

フォルダから7日より古い4桁の数字のファイルを検索するBASHスクリプト
#!/bin/bash

unset result
result=$(find /home -path "$HOME/TestDir/[0-9][0-9][0-9][0-9]/test*" -mtime -7 -print -delete 2>/dev/null)
[ "$result" ] || echo "There are no recovery files older than 7 days"

この/testセクションでは、実際には2つのファイル名を見つける必要があります。で始まるものE*から始まるものP_*。これは可能ですか?

答え1

~から人々が見つけた

終了ステータス
探すすべてのファイルが正常に処理された場合は状態0で終了し、エラーが発生した場合は0より大きい状態で終了します。これは意図的に非常に広範な説明ですが、戻り値がゼロでない場合は、結果の精度に依存しないでください。探す

したがって、一致するファイルが存在しない場合、終了ステータスはゼロのままです。したがって、出力が空であることを確認することをお勧めします。

unset result
result=$(find ~/TestDir -path "$HOME/TestDir/[0-9][0-9][0-9][0-9]/test*" -mtime -7 -print -delete 2>/dev/null)
[ "$result" ] || echo "There are no recovery files older than 7 days"

答え2

find $(find -name "[0-9][0-9][0-9][0-9]") -name "[test]*" -mtime -7 -exec rm -i {} \; || echo "There are no recovery files older than 7 days"

これ||(または)演算子は左側のコマンドの結果を表示し、左側のコマンドが失敗した場合にのみ(戻りコードに基づいて)右側のコマンドを実行します。

findが一致するファイルを見つけられない場合は、1を返し、||runがコマンドを実行しますecho

関連情報