首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用shell脚本拆分文件名和文件夹路径方面需要帮助

在使用shell脚本拆分文件名和文件夹路径方面需要帮助
EN

Stack Overflow用户
提问于 2013-10-20 12:19:59
回答 3查看 9.3K关注 0票数 5

我是shell脚本方面的新手。我需要将以下文件结构拆分为文件名分离和文件夹路径分离。在文件名中,我不需要_ABF1_6,因为它不是文件名的一部分。此外,此_ABF1_6从文件路径更改到路径,并且对所有文件都不是相同的。因此,这需要被认为是带有_ABF1的常规_ABF1。救命啊!!

示例文件路径:

代码语言:javascript
复制
/EBF/DirectiveFiles/data_report_PD_import_script_ABF1_6 

需要输出:

代码语言:javascript
复制
Folder path: /EBF/DirectiveFiles/ 
Filename: data_report_PD_import_script 
EN

回答 3

Stack Overflow用户

发布于 2013-10-20 18:15:23

由于这个原因,Linux有特殊的实用程序,basenamedirname

代码语言:javascript
复制
$ basename /EBF/DirectiveFiles/data_report_PD_import_script_ABF1_6
data_report_PD_import_script_ABF1_6
$ dirname /EBF/DirectiveFiles/data_report_PD_import_script_ABF1_6
/EBF/DirectiveFiles
票数 14
EN

Stack Overflow用户

发布于 2013-10-20 12:42:51

UNIX没有“文件夹”,它有“目录”。

代码语言:javascript
复制
$ cat file
/ECMS/EDEV/ClassicClient/Forms/DirectiveFiles/data_report_PD_import_script_rev1_46_2_16

$ sed -r 's/(.*\/)(.*)_rev1.*/Directory: \1\nFilename: \2/' file
Directory: /ECMS/EDEV/ClassicClient/Forms/DirectiveFiles/
Filename: data_report_PD_import_script

或者使用GNU awk (用于gensub()),如果您愿意的话:

代码语言:javascript
复制
$ gawk '{print gensub(/(.*\/)(.*)_rev1.*/,"Directory: \\1\nFilename: \\2","")}' file
Directory: /ECMS/EDEV/ClassicClient/Forms/DirectiveFiles/
Filename: data_report_PD_import_script
票数 5
EN

Stack Overflow用户

发布于 2013-10-20 13:44:29

为此,可以使用shell参数展开。:

代码语言:javascript
复制
user> p=/EBF/DirectiveFiles/data_report_PD_import_script_ABF1_6 
user> echo ${p%/*}
/EBF/DirectiveFiles
user> f=${p##/}
user> echo ${f%_ABF1}
data_report_PD_import_script

这里有一个指向bash文档的链接。

或者使用read和GNU (不像上面那样可移植):

代码语言:javascript
复制
read dir file < <(sed -r 's:(.*)/(.*)_ABF1.*:"\1" "\2":' <<<"$p")
echo $dir $file

输出:

代码语言:javascript
复制
"/EBF/DirectiveFiles" "data_report_PD_import_script"
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19477236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档