需要使用shell脚本拆分文件名和文件夹路径的帮助吗

需要使用shell脚本拆分文件名和文件夹路径的帮助吗,shell,unix,awk,Shell,Unix,Awk,我是shell脚本编写的新手。我需要将以下文件结构拆分为文件名分隔和文件夹路径分隔。 在文件名中,我不需要_ABF1_6,因为它不是文件名的一部分。此外,此_ABF1_6会随着文件路径的变化而变化,并且并非所有文件路径都是相同的。所以这需要被视为正则表达式..从_ABF1开始。请帮忙 示例文件路径: /EBF/DirectiveFiles/data_report_PD_import_script_ABF1_6 Folder path: /EBF/DirectiveFiles/ Filena

我是shell脚本编写的新手。我需要将以下文件结构拆分为文件名分隔和文件夹路径分隔。 在文件名中,我不需要_ABF1_6,因为它不是文件名的一部分。此外,此_ABF1_6会随着文件路径的变化而变化,并且并非所有文件路径都是相同的。所以这需要被视为正则表达式..从_ABF1开始。请帮忙

示例文件路径:

/EBF/DirectiveFiles/data_report_PD_import_script_ABF1_6 
Folder path: /EBF/DirectiveFiles/ 
Filename: data_report_PD_import_script 
所需输出:

/EBF/DirectiveFiles/data_report_PD_import_script_ABF1_6 
Folder path: /EBF/DirectiveFiles/ 
Filename: data_report_PD_import_script 
UNIX没有“文件夹”,它有“目录”

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

$ gawk '{print gensub(/(.*\/)(.*)_rev1.*/,"Directory: \\1\nFilename: \\2","")}' file
Directory: /ECMS/EDEV/ClassicClient/Forms/DirectiveFiles/
Filename: data_report_PD_import_script

您可以对此使用shell参数展开:

user>p=/EBF/DirectiveFiles/data\u report\u PD\u import\u script\u ABF1\u 6
用户>echo${p%/*}
/EBF/DirectiveFiles
用户>f=${p##/}
用户>echo${f%\u ABF1}
数据\报告\局部放电\导入\脚本
[Here][1]是有关此问题的
bash
文档的链接

或者使用
read
和GNU-sed(不像上面那样便携):


Linux为此有特殊的实用程序,
basename
dirname

$ 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

在您发布问题并收到答案后,您究竟为什么要更改示例输入中的目录路径并将
\u rev1\u 6
更改为
\u ABF1\u 6
?这对你的问题没有影响,但现在人们更难理解答案之间的差异。这是完美的。谢谢
$ 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