适用于“find”的正则表达式
A regex that works in `find`
我有一个包含 ~8000 个格式文件的目录
output/Manuscript_00750_AnimalGiants-compact.json
output/Manuscript_00750_AnimalGiants-expanded.json
output/Manuscript_00750_AnimalGiants.json
output/Manuscript_00752_AnimalGiants-compact.json
output/Manuscript_00752_AnimalGiants-expanded.json
output/Manuscript_00752_AnimalGiants.json
output/Unit_TZH_12345_Foo-compact.json
output/Unit_TZH_12345_Foo-expanded.json
output/Unit_TZH_12345_Foo.json
我需要想出一个正则表达式来使用 find
工具来 select 仅手稿紧凑型:
output/Manuscript_00750_AnimalGiants-compact.json
output/Manuscript_00752_AnimalGiants-compact.json
想出正则表达式是容易的部分,但让 find
合作是困难的部分。
这是我的正则表达式:
/Manuscript[0-9_a-zA-Z]+-compact\.json/
以下是我尝试过的一些命令;都产生零结果。 cwd就是上面的目录output/
:
find output -regex "Manuscript[0-9_a-zA-Z]+-compact\.json"
find output -regex "\./output/Manuscript[0-9_a-zA-Z]+-compact\.json/"
find output -regex ".*\Manuscript[0-9_a-zA-Z]+-compact.*\json"
但此命令确实会产生结果 - 它 select 是所有以 "Manuscript" 开头的文件,这显然太宽泛了:
find output -regex ".*\Manuscript.*\json"
此处 find
的正确正则表达式格式是什么?
在 OSX 上,您可以将此 find
与扩展正则表达式一起使用:
find -E output -regex '.*/Manuscript[0-9_a-zA-Z]+-compact\.json$'
在 gnu find
上使用:
find output -regextype posix-extended -regex '.*/Manuscript[0-9_a-zA-Z]+-compact\.json$'
我有一个包含 ~8000 个格式文件的目录
output/Manuscript_00750_AnimalGiants-compact.json
output/Manuscript_00750_AnimalGiants-expanded.json
output/Manuscript_00750_AnimalGiants.json
output/Manuscript_00752_AnimalGiants-compact.json
output/Manuscript_00752_AnimalGiants-expanded.json
output/Manuscript_00752_AnimalGiants.json
output/Unit_TZH_12345_Foo-compact.json
output/Unit_TZH_12345_Foo-expanded.json
output/Unit_TZH_12345_Foo.json
我需要想出一个正则表达式来使用 find
工具来 select 仅手稿紧凑型:
output/Manuscript_00750_AnimalGiants-compact.json
output/Manuscript_00752_AnimalGiants-compact.json
想出正则表达式是容易的部分,但让 find
合作是困难的部分。
这是我的正则表达式:
/Manuscript[0-9_a-zA-Z]+-compact\.json/
以下是我尝试过的一些命令;都产生零结果。 cwd就是上面的目录output/
:
find output -regex "Manuscript[0-9_a-zA-Z]+-compact\.json"
find output -regex "\./output/Manuscript[0-9_a-zA-Z]+-compact\.json/"
find output -regex ".*\Manuscript[0-9_a-zA-Z]+-compact.*\json"
但此命令确实会产生结果 - 它 select 是所有以 "Manuscript" 开头的文件,这显然太宽泛了:
find output -regex ".*\Manuscript.*\json"
此处 find
的正确正则表达式格式是什么?
在 OSX 上,您可以将此 find
与扩展正则表达式一起使用:
find -E output -regex '.*/Manuscript[0-9_a-zA-Z]+-compact\.json$'
在 gnu find
上使用:
find output -regextype posix-extended -regex '.*/Manuscript[0-9_a-zA-Z]+-compact\.json$'