コンテンツ/tmp/fefile
amx/eng/prf.amx
amx/eng/det.amx
bmb/menu.bmb
bmx/eng/menu.bmx
dll/tlnt.dll
dlx/eng/dlx
for file in `cat /tmp/fefile`
do
if [ -f $file ]
then
echo "File '${file}' found in $(pwd) path."
echo " Now i need to check if the that file modified in last 10 mins with the below find command "
find . -mmin -10 -type f -name ${file} -regextype posix-egrep -regex ".*/(dir1|dir1|dir3|dir4)/.+" -printf "%P\n" > /tmp/base
echo "The files that are modified recently are below"
File=(cat /tmp/base)
echo " now i am verifying that $file is matched with $File "
if[ $file == $File ]
then
echo " tmp file matched with base file."
else
echo " file doesn't match"
fi # Originally missing
else
echo "File '{file} not found."
fi
done
findコマンドで上記のスクリプトを変更してファイル名を読み、過去10分間変更されたことを確認します。
ファイルが変更されたら、2つのファイルが一致していることを確認してください。
ベストアンサー1
内部に探す使用するコマンド正規表現。この正規表現は、リストされたファイル名を調べます。フェイペイファイルがありますが、この正規表現に一致するものはありません。注:ファイル内ではなくファイル名自体を確認してください。。
find . -mmin -10 -type f -name ${file} -regextype posix-egrep -regex ".*/(dir1|dir1|dir3|dir4)/.+" -printf "%P\n" > /tmp/base
それらのどれもありません:
anything in any amount
追加するdir1
またはdir1
(再び?!おそらくdir2)またはdir3
またはdir4
プラスanything in any amount but at least one
もう一つの問題は正規表現そのものです。
".*/(dir1|dir1|dir3|dir4)/.+"
おそらく次のようになります。
".*\/(dir1|dir2|dir3|dir4)\/.+"
/
次のようにエスケープを使用する必要があります\
。\/
返品:
File=(cat /tmp/base)
しなければならない:
File=$(cat /tmp/base)
または
File=`cat /tmp/base`
もう一つのポイントは行末ですfind
。
(...) -printf "%P\n" > /tmp/base
>を>>に変更することをお勧めします。
(...) -printf "%P\n" >> /tmp/base
それ以外の場合は、1つを除いて見つかったすべてのファイルを上書きします。