我有一個像比賽數量的可變長度的shell腳本
- _1_blabla.sql
- _35_description.sql
- _148_last_migration.sql
- structure.sql文件
如何我是否以_variableLengthOfDigit_randomString.sql開頭匹配這些文件。
到目前爲止,我有類似
find . -name '_[0-9]_*.sql'
但它只會在第一種情況相匹配。
我有一個像比賽數量的可變長度的shell腳本
如何我是否以_variableLengthOfDigit_randomString.sql開頭匹配這些文件。
到目前爲止,我有類似
find . -name '_[0-9]_*.sql'
但它只會在第一種情況相匹配。
使用-regex
選項find
:
find . -regex '.*/_[0-9]+_.*\.sql'
或者,使用bash的擴展通配:
shopt -s extglob
echo _+([0-9])_*.sql
使用發現你可以使用正則表達式:
find . -regex '.*_[0-9]*_.*\.sql$'
如果使用grep
您可以使用正則表達式:
find . | grep '^_[0-9]*_.*\.sql$'
的find
的-name
無法比擬的模式一樣的單純模式匹配你所描述的一個。
您也可以使用現代find
命令的選項-regex
。
的grep是完全沒有必要的,因爲在這裏找到了正則表達式的能力。 – anubhava
不是每個'發現'。 – Alfe
'find'的POSIX版本不適合管道,因爲它沒有'-print0'。 – chepner