簡體   English   中英

如何檢查bash腳本目錄中是否存在與正則表達式匹配的文件?

[英]How to check if files matching a regex exist in a directory in bash script?

我希望找到某種方法來檢查目錄中是否存在與某個正則表達式匹配的文件。 當前,我正在使用以下方法,但是在某些情況下它將返回錯誤:

ls srv_*.log

上面的命令將導致ls:無法訪問srv _ *。log:如果目錄中沒有與正則表達式匹配的文件,則沒有這樣的文件或目錄

我要匹配的正則表達式是“ srv _ *。log”

有人有什么想法嗎?

謝謝。

使用查找

一個簡單的例子

find $DIR -type f -name "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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM