使用inotifywait,排除具有特定扩展名的文件

使用inotifywait,排除具有特定扩展名的文件

我正在观看传入的加密文件,它们有两个扩展名,例如testfile<date>.dat.pgp.

问题是:一旦文件被解密,它就会testfile<date>.dat在监视器目录中创建一个新文件(),这会触发监视进程的另一个不需要的运行。

如何排除testfile<date>.dat但包含testfile<date>.dat.pgp

这是我的代码:

inotifywait -m -e create --format '%w%f'  "${MONITORDIR}"  |  while read  NEWFILE
do

    #decrypts testfile.dat.pgp
    # new file "testfile<date>.dat" is created in the $MONITOR_DIR which triggers
    # the inotifywait process to run again.

done

答案1

将您的呼叫转接到grep

inotifywait -m -e create --format '%w%f' "${MONITORDIR}" |\
grep '.dat.pgp$' --line-buffered | while read  NEWFILE 
   do

   #decrypts testfile.dat.pgp
   # new file "testfile.dat" is created in the $MONITOR_DIR which triggers
   # the inotifywait process to run again.

   done

inotifywait只观看扩展名为.dat.pgp.

答案2

您也可以跳过 while read 循环内的文件。

    inotifywait -m -e create --format '%w%f' "${MONITORDIR}" |\
    while read  -r NEWFILE; do 
       if [[ $NEWFILE == *.dat.pgp ]]; then
        #decrypts testfile.dat.pgp
        # new file "testfile.dat" is created in the $MONITOR_DIR which triggers
        # the inotifywait process to run again.
       fi
    done

我还没有测试该代码,但测试应该只处理以*.dat.gpg

相关内容