Shell脚本for循环输出文件名时如何去掉完整路径仅保留文件名
Shell脚本调整方案
你可以通过以下两种常用方式修改脚本,仅输出纯文件名:
方式1:使用basename命令(可读性强)
basename是系统自带的路径处理工具,专门用于提取路径中的文件名部分,修改后的完整脚本如下:
INBOX=/home/tmp/ for fileName in "$INBOX"abc*.csv do basename "$fileName" done
方式2:使用Shell原生参数扩展(性能更高)
无需调用外部命令,直接用Shell内置的字符串处理能力即可实现,执行效率更高,修改后的完整脚本如下:
INBOX=/home/tmp/ for fileName in "$INBOX"abc*.csv do echo "${fileName##*/}" done
其中${fileName##*/}的逻辑为:从路径字符串的开头,匹配最长的符合*/规则的前缀并删除,最终剩余部分就是纯文件名。
注意:给变量包裹双引号可以避免文件名包含空格、特殊字符时出现执行错误,建议养成该编码习惯。
内容的提问来源于stack exchange,提问作者Srinivasan
相关产品推荐
相关产品推荐

