【发布时间】:2016-09-27 14:40:21
【问题描述】:
我有一个包含 ~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 工具来仅选择 Manuscript-compact 的:
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"
但是这个命令确实会产生结果——它会选择所有以“Manuscript”开头的文件,这显然太宽泛了:
find output -regex ".*\Manuscript.*\json"
find 的正确正则表达式格式是什么?
【问题讨论】: