[英]Check if file exists in a directory specified by regex Linux
我正在嘗試在文件運算符中使用regex來查找其中一個用regex指定一個子目錄的文件,但是我想知道是否有可能。 我想我嘗試了所有可能的引號和括號組合。 我在這里缺少什么,還是文件操作符需要特定的路徑?
我不太確定。 有人可以澄清一下嗎?
我想要實現的是這樣的事情(這顯然不起作用,因為它將正則表達式部分作為子目錄的名稱)
if [[ -r '/agent/[0-9 .]*/bin/run.sh' ]]
查找具有-regex
選項
-regex模式
文件名與正則表達式模式匹配。 這是整個路徑上的匹配項,而不是搜索。 例如,要匹配名為
./fubar3', you can use the regular expression
的文件./fubar3', you can use the regular expression
。* bar。 或.*b.*3
,而不是f.*r3
。 find可以理解的正則表達式默認是Emacs正則表達式,但是可以使用-regextype選項進行更改。
if find . -regex '/agent/[0-9 \.]*/bin/run.sh'
根據手冊 ,僅=〜運算符進行正則表達式匹配。
但是還有另一種方法:
RUNFILES=$( find /agent -name run.sh | grep -e '^/agent/[0-9 .]*/bin/run.sh$' )
if [ -n "$RUNFILES" ]
then
[...]
fi
您可以簡單地使用ls
命令和正則表達式:
if ls /agent/[0-9\ .]*/bin/run.sh
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.