Linux shell 提取文件名和目录名的方法
${}
[root@node01~]#file=/dir1/dir2/dir3/my.file.txt [root@node01~]#echo${file#*/} dir1/dir2/dir3/my.file.txt
删掉第一个/及其左边的字符串
[root@node01~]#echo${file##*/} my.file.txt
删掉最后一个/ 及其左边的字符串
[root@node01~]#echo${file#*.} file.txt
删掉第一个. 及其左边的字符串
[root@node01~]#echo${file##*.} txt
删掉最后一个. 及其左边的字符串
[root@node01~]#echo${file%/*} /dir1/dir2/dir3
删掉最后一个 / 及其右边的字符串
[root@node01~]#echo${file%%/*}空值
删掉第一个/ 及其右边的字符串
[root@node01~]#echo${file%.*} /dir1/dir2/dir3/my.file
删掉最后一个 . 及其右边的字符串
[root@node01~]#echo${file%%.*} /dir1/dir2/dir3/my
删掉第一个 . 及其右边的字符串
记忆的方法为:
#是去掉左边(键盘上#在$的左边)
#去掉左边第一个及左边的字符串
##去掉最后一个及左边的字符串
%是去掉右边(键盘上%在$的右边)
%去掉最后一个及右边的字符串
去掉第一个及右边的字符串
单一符号是最小匹配;两个符号是最大匹配
单一符号是最小匹配;两个符号是最大匹配
[root@node01~]#echo${file:0:5} /dir1
提取最左边的5个字节
[root@node01~]#echo${file:5:5} /dir2
提取第5个字节右边的连续5个字节
也可以对变量值里的字符串作替换:
[root@node01~]#echo${file/dir/path} /path1/dir2/dir3/my.file.txt
将第一个dir替换为path
[root@node01~]#echo${file//dir/path} /path1/path2/path3/my.file.txt
将全部dir替换为path
总结
以上所述是小编给大家介绍的Linuxshell提取文件名和目录名的方法,希望对大家有所帮助!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。