Linux对文件名进行操作——截取
2022-03-10 本文已影响0人
Bio_Infor
在shell中进行文件操作时,我们很多时候想对文件名进行截取,例如去掉文件名的后缀,而只保留剩余的部分。下面介绍使用 ${} 来完成上述任务。
示例任务
我们想对 share/home/jianshu_test.txt 进行操作,输出下列内容:
share
home/jianshu_test.txt
jianshu_test
完成对 share 的提取
file=share/home/jianshu_test.txt
echo ${file%%/*}
> share
完成对 home/jianshu_test.txt 的提取
echo ${file#*/}
> home/jianshu_test.txt
完成对 jianshu_test 的提取
要完成这个任务,可以首先把 jianshu_test.txt 提取出来:
name=$(basename $file)
然后再进行截取:
echo ${name%.*}
> jianshu_test
解释
记住两个原则:
% 表示对某个字符及其右边的部分进行删除
# 表示对某个字符及其左边的部分进行删除
记忆方法:在键盘上,%在#右边,所以是对右边的部分进行删除,#则是相反的。
此外:
## 表示最后一个该字符及其左边的部分
# 表示第一个该字符及其左边的部分
% 表示最后一个该字符及其右边的部分
%% 表示第一个该字符及其右边的部分