【发布时间】:2017-03-16 23:19:21
【问题描述】:
我有一个包含以下字符串的文件,需要将带有数字的文件夹的路径分配给变量:
/tmp/gfh/000000004802803/blablabla/EngID_Consolidation.zip
/tmp/vcbn/000000005395825/blablabla/172_6578-DUMP_NOMServer.zip
/tmp/one3/435876dfhg/000000004017051/5.zip
/tmp/one3/dsfkgjh/dsjfhgfd/000000004617319/Sybase.zip
例如我需要分配变量: /tmp/gfh/000000004802803/
数字和路径总是不同的。作为第一步,我使用正则表达式将数字分配到变量文件夹中:
zip_folder_name0=$(grep -E -o "/([0]{5}[0-9]{10})/" <<< $zip_path)
zip_folder_name=${zip_folder_name0#"/"}
zip_folder_name=${zip_folder_name%"/"}
echo $zip_folder_name
返回000000004802803 如何将根文件夹的所有路径分配给另一个变量? 我认为它可以通过正则表达式来完成,从字符串的开头到变量 $zip_folder_name。这可能吗?或者也许还有其他方法?
UPD1 忘了提一下,后面有数字的文件夹可以是另一个文件夹,例如/tmp/gfh/000000004802803/blablabla/EngID_Consolidation.zip 我正好需要 /tmp/gfh/000000004802803/ 到变量中。
【问题讨论】:
-
用更多细节更新问题
-
数字总是第三个字段吗?路径中是否有其他文件夹只有数字? (即你可以有
/tmp/gfh/ijk/012345/myzip.zip或/tmp/gfh/0123/4567/myzip.zip吗?) -
总是有15位的文件夹,但前后可以是数字和字母混合的文件夹。不,没有其他名称严格为 15 位的文件夹,但可以是多于或少于 15 位的文件夹。例如。 /tmp/gfh/000000004802803/123456/EngID_Consolidation.zip。