Linux shell提取文件名和目录名的方法(转)
来源:互联网 发布:mac开机后键盘没反应 编辑:程序博客网 时间:2024/06/17 02:22
该命令的作用是去掉变量var从左边算起的最后一个'/'字符及其左边的内容,返回从左边算起的最后一个'/'(不含该字符)的右边的内容。使用例子及结果如下:
fengmm521deMacBook-Pro:~ fengmm521$ var=/dir1/dir2/dir3/file.txt
fengmm521deMacBook-Pro:~ fengmm521$ echo ${var##*/}
file.txt
若使用时在shell程序文件中,可以使用变量来保存这个结果,再加以利用,如file=${var##*/}
2、${var##*.}
该命令的作用是去掉变量var从左边算起的最后一个'.'字符及其左边的内容,返回从左边算起的最后一个'.'(不含该字符)的右边的内容。使用例子及结果如下:
fengmm521deMacBook-Pro:~ fengmm521$ var=/dir1/dir2/dir3/file.txt
fengmm521deMacBook-Pro:~ fengmm521$ echo ${var##*.}
txt
如果文件的后缀不仅有一个,例如,file.tar.gz,命令${var##*.}仅能提取最后一个后缀,而我想提取tar.gz时该怎么办?那么就要用下面所说的${var#*.}命令了。
3、${var#*.}
该命令的作用是去掉变量var从左边算起的第一个'.'字符及其左边的内容,返回从左边算起第一个'.'(不含该字符)的右边部分的内容。使用例子及结果如下:
从运行结果可以看到,使用该命令,可以提取出文件的多个后缀。fengmm521deMacBook-Pro:~ fengmm521$ var=/dir1/dir2/dir3/file.tar.gz
fengmm521deMacBook-Pro:~ fengmm521$ echo ${var#*.}
tar.gz
4、${var%/*}
该命令的使用是去掉变量var从右边算起的第一个'/'字符及其右边的内容,返回从右边算起的第一个'/'(不含该字符)的左边的内容。使用例子及结果如下:
从运行的结果可以看到,使用该命令,可以提取出我们需要的文件所在的目录fengmm521deMacBook-Pro:~ fengmm521$ var=/dir1/dir2/dir3/file.txt
fengmm521deMacBook-Pro:~ fengmm521$ echo ${var%/*}
/dir1/dir2/dir3
5、${var%%.*}
该命令的使用是去掉变量var从右边算起的最后一个'.'字符及其右边的内容,返回从右边算起的最后一个'.'(不含该字符)的左边的内容。使用例子及结果如下:
当我们需要建立一个与文件名相同名字(没有后缀)的目录与对应的文件相对应时,就可以使用该命令来进行操作。例如,解压文件的情况就与此类似,我们压缩文件file.zip时,会在与file.zip同级目录下建立一个名为file的目录。fengmm521deMacBook-Pro:~ fengmm521$ var=/dir1/dir2/dir3/file.txt
fengmm521deMacBook-Pro:~ fengmm521$ echo ${var%%.*}
/dir1/dir2/dir3/file
6、${}总结
看到这里,就可以知道,其实该命令的用途非常广泛,上面只是指针文件名和目录名的命名特性来进行提取的一些特例而已。
1、basename
1)从路径中提出出文件名(带后缀),例子如下:
fengmm521deMacBook-Pro:~ fengmm521$ var=/dir1/dir2/dir3/file.txt
fengmm521deMacBook-Pro:~ fengmm521$ echo $(basename $var)
file.txt
2、dirnamefengmm521deMacBook-Pro:~ fengmm521$ var=/dir1/dir2/dir3/file.txt
fengmm521deMacBook-Pro:~ fengmm521$ echo $(basename $var .txt)
file
该命令的作用是从路径中提取出目录名,使用方法为 dirname NAME
使用例子如下:
这样就提取出了file.txt文件所在的目录。fengmm521deMacBook-Pro:~ fengmm521$ var=/dir1/dir2/dir3/file.txt
fengmm521deMacBook-Pro:~ fengmm521$ dirname $var
/dir1/dir2/dir3
注:该命令不仅能提取出普通文件所的目录,它能提取出任何文件所在的目录,例如目录所在的目录,如下:
它提取出了目录dir2所在的目录dir1.fengmm521deMacBook-Pro:~ fengmm521$ var=/dir1/dir2/dir3/
fengmm521deMacBook-Pro:~ fengmm521$ dirname $var
/dir1/dir2
- Linux的shell提取文件名和目录名的方法
- Linux shell提取文件名和目录名的方法(转)
- Linux shell 提取文件名和目录名
- Linux shell 提取文件名和目录名
- Linux shell 之 提取文件名和目录名的一些方法
- Linux shell中提取文件名和目录名的一些方法
- Linux shell 之 提取文件名和目录名的一些方法
- Linux shell 之 提取文件名和目录名的一些方法
- Linux shell 之 提取文件名和目录名的一些方法
- Linux shell 之 提取文件名和目录名的一些方法
- Linux shell 之 提取文件名和目录名的一些方法
- Linux shell 之 提取文件名和目录名的一些方法
- Linux shell 之 提取文件名和目录名的一些方法
- Linux shell 之 提取文件名和目录名的一些方法
- Linux shell 之 提取文件名和目录名的一些方法
- Linux shell 之 提取文件名和目录名的一些方法
- Linux shell 之 提取文件名和目录名的一些方法
- Linux shell 之 提取文件名和目录名的一些方法
- 阿里云通过He.net添加IPV6(转)
- linux自动内存清理
- Hibernate初探之一对多
- 一种自动编写程序的想法
- Linux Shell 基本语法(转)
- Linux shell提取文件名和目录名的方法(转)
- 数据结构学习记录-指针与动态内存分配
- Sublime Text设置(转)
- sublime text开发java
- 从 Linux 终端编译运行 Eclipse Java 项目
- 使用Sublime Text进行Erlang开发
- apk反编译相关工具用法
- mac os待机快捷键
- 关于魅族note无法连接mac调试(转)