我正在使用entr檢查是否將新檔案添加到某些子目錄,并在發生此類事件時運行命令。如果我有一個包含檔案夾的目錄:folder、prefix_folder1和prefix_folder2,那么我想監視后兩者的某個子目錄中是否存在新檔案,即監視prefix_folder1/subdir和prefix_folder2/subdir
這是我目前使用無限回圈的方法:
1 #!/bin/bash
2
3 trap "exit" INT # in case of ^C
4 while true
5 do
6 for stage in $(ls '/Users/me/test')
7 do
8 if [[ "$stage" == "prefix"* ]]; then #check for prefix
9 ls -d * /Users/me/test/$stage/subdir | entr -pd echo hey
10
11 fi
12 done
13 done
但是對于每個目錄,腳本在第 9 行掛起,直到創建新檔案。prefix_folder2/subdir例如,如果echo在prefix_folder1/subdir.
在這種情況下,我對 bash for 回圈的理解有限,我不確定要查找哪些關鍵字來找到解決方案。
uj5u.com熱心網友回復:
我認為這就是你想要的:
while true
do
ls -d /Users/me/test/prefix*/subdir | entr -pd echo hey
done
這會將您想要一次監視的所有目錄傳遞給一次呼叫entr,而不是為每個目錄單獨呼叫它。
您不需要包含*在ls命令中,因為它還將監視當前目錄中的所有檔案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/451508.html
