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

解释

记住两个原则:

% 表示对某个字符及其右边的部分进行删除
# 表示对某个字符及其左边的部分进行删除

记忆方法:在键盘上,%#右边,所以是对右边的部分进行删除,#则是相反的。

此外:

## 表示最后一个该字符及其左边的部分
# 表示第一个该字符及其左边的部分
% 表示最后一个该字符及其右边的部分
%% 表示第一个该字符及其右边的部分

记忆方法:当 %# 只出现一次时,其匹配出的范围总是最小的;出现两次时,其匹配出现的范围总是最大的。
上一篇下一篇

猜你喜欢

热点阅读