我正在嘗試使用命令查找工件
名稱:獲取 Java 工件的路徑
運行:echo JAVA_ARTIFACT=$(findbuild/libs/*.jar -type f) >>$GITHUB_ENV
問題是我在那個目錄中有 2 個工件
- 構建/libs/abc.jar
- 構建/libs/abc-plain.jar
我只想選擇 abc.jar 檔案。
誰能建議我怎樣才能做到這一點?
uj5u.com熱心網友回復:
該find命令可以與正則運算式一起使用,從而可以輕松獲得任何型別的復雜搜索結果。這個怎么運作:
- 您必須使用
find命令-regex而不是-name. - 您必須生成匹配的正則運算式
如何find將檔案名傳遞給正則運算式?
假設我們有以下目錄結構:
/home/someone/build/libs/abc.jar
/home/someone/build/libs/abc-plain.jar
我們坐在someone
如果我們在find .沒有任何進一步引數的情況下執行,我們會得到:
./build/libs/abc.jar
./build/libs/abc-plain.jar
因此,我們可以例如使用正則運算式搜索:
- 某事以一個點開頭
. - 檔案名中可能有一些額外的路徑
- 不應包含
-任意數量的字符 - 以。。結束
.jar
這導致:
- '。'
- '/*'
- '[^-] '
- '。罐'
一起:
find . -regex '.*/[^-] .jar'
或者如果您只想搜索build/libs/
find ./build/libs -regex '.*/[^-] .jar'
您可以在那里找到一個在線正則運算式工具。
uj5u.com熱心網友回復:
find 命令支持標準 UNIX 正則運算式來匹配、包含或排除檔案。您可以使用正則運算式輕松撰寫復雜的查詢,同時查找命令遞回地下降列出的每個 /file/to/path 的目錄樹,評估一個運算式。
uj5u.com熱心網友回復:
由于您沒有明確提到您不希望-檔案名中包含連字符,因此我假設查找沒有-.
我會嘗試這樣的事情。用 .匹配小寫、大寫、數字和.jar擴展名regex。
find build/libs/ -regextype posix-egrep -regex '.*/[a-zA-Z0-9] \.jar'
在本地測驗時,我得到了以下輸出。
touch abc.jar
touch abc-plain.jar
find . -regextype posix-egrep -regex '.*/[a-zA-Z0-9] \.jar'
./abc.jar
您可以在此處嘗試上述命令
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/457898.html
下一篇:**在搜索路徑時如何作業
