![](/img/trans.png)
[英]How to check if a files exists in a specific directory in a bash script?
[英]How to check if files matching a regex exist in a directory in bash script?
我希望找到某種方法來檢查目錄中是否存在與某個正則表達式匹配的文件。 當前,我正在使用以下方法,但是在某些情況下它將返回錯誤:
ls srv_*.log
上面的命令將導致ls:無法訪問srv _ *。log:如果目錄中沒有與正則表達式匹配的文件,則沒有這樣的文件或目錄 。
我要匹配的正則表達式是“ srv _ *。log”
有人有什么想法嗎?
謝謝。
srv_*.log
不是正則表達式,而是全局匹配器。
您可以捕獲輸出並將stderr重定向到/ dev / null:
FILES_LIST="$(ls srv_*.log 2>/dev/null)"
for file in $FILES_LIST; do
#something with $file
done
您甚至可以在這里沒有FILES_LIST
。
假設您位於好目錄中,則可以執行以下操作:
shopt -s nullglob
set -- srv_*.log
if [ $# -gt 0 ]
then
#do your stuff
fi
$#
包含匹配文件的數量
從bash
頁:
如果設置了nullglob選項,但未找到匹配項,則會刪除該單詞。 如果設置了failglob shell選項,但未找到匹配項,則會顯示一條錯誤消息,並且不執行該命令。
表示您可能想要
shopt -s nullglob
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.