在 Linux 服務器上,我的檔案夾中有幾個檔案,我的問題是:
如何僅使用正則運算式查找檔案名,以foo或bar開頭并以.properties結尾。但不是any.properties。只有foo -service .properties和bar -service .properties
/home/user/foo-service/src/main/resources/any.properties
/home/user/foo-service/src/main/resources/foo-service.properties
/home/user/foo-service/src/main/resources/bar-service.properties
嘗試用字串查找:
find /home/user/foo-service/src/main/resources/ -maxdepth 1 \
-regextype posix-extended -regex .*(foo|bar).*\.properties
但結果我有所有 3 個字串,因為foo存在于路徑中(/foo-service/)
我只想在路徑中的最后一個斜杠之后找到,因此我需要檔案的絕對路徑。
uj5u.com熱心網友回復:
你可以使用這個命令:
find /home/user/foo-service/src/main/resources/ -maxdepth 1 \
-regextype posix-extended -regex '.*/(foo|bar)[^/]*\.properties$'
在這里,將匹配任何以or(foo|bar)[^/]*\.properties$開頭并以 結尾的檔案名,同時匹配 0 個或多個不在or之后的任何字符。foobar.properties/foobar
所以這將匹配:
/home/user/foo-service/src/main/resources/foo-service.properties
/home/user/foo-service/src/main/resources/bar-service.properties
但不匹配:
/home/user/foo-service/src/main/resources/any.properties
因為我們在最后一條路徑/之后有一個角色。/foo
uj5u.com熱心網友回復:
您可以使用該-name選項來僅匹配基本檔案名,而不必處理整個路徑名。使用-o運算子匹配兩個前綴:
find /home/user/foo-service/src/main/resources/ -maxdepth 1 \
\( -name 'foo*.properties' -o -name 'bar*.properties' \)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/512834.html
上一篇:如何在字串中間增加一個數字
下一篇:Perl用變數替換檔案的內容
