50字范文,内容丰富有趣,生活中的好帮手!
50字范文 > shell 切分文件名提取文件扩展名或提取文件名

shell 切分文件名提取文件扩展名或提取文件名

时间:2023-12-31 22:19:56

相关推荐

shell 切分文件名提取文件扩展名或提取文件名

有些脚本要根据文件名进行各种处理,有时候需要保留文件名抛弃文件后缀,也有时候需要文件后缀不要文件名,这类提取文件部分的操作使用shell的内建功能就能实现。需要用到的几个操作符有:%%%###

从右向左匹配 :%和%%操作符的示例

#!/bin/bash#提取文件名,删除后缀。file_name="text.gif"name=${file_name%.*}echo file name is: $name输出结果:file name is: test#${VAR%.* }含义:从$VAR中删除位于 % 右侧的通配符左右匹配的字符串,通配符从右向左进行匹配。现在给变量 name 赋值,name=text.gif,那么通配符从右向左就会匹配到 .gif,所有从 $VAR 中删除匹配结果。# % 属于非贪婪操作符,他是从左右向左匹配最短结果;%% 属于贪婪操作符,会从右向左匹配符合条件的最长字符串。file_name="text.gif.bak."name=${file_name%.*}name2=${file_name%%.*}echo file name is: $nameecho file name is: $name2输出结果:file name is: test.gif.bak //使用 %file name is: test //使用 %%操作符 %% 使用 .* 从右向左贪婪匹配到 .gif.bak.

从左向右匹配:#和##操作符示例

#!/bin/bash#提取后缀,删除文件名。file_name="text.gif"suffix=${file_name#*.}echo suffix is: $suffix输出结果:suffix is: gif# ${VAR#*.} 含义:从 $VAR 中删除位于 # 右侧的通配符所匹配的字符串,通配符是左向右进行匹配。# 跟 % 一样,# 也有贪婪操作符 ## 。file_name="text.gif.bak..txt"suffix=${file_name#*.}suffix2=${file_name##*.}echo suffix is: $suffixecho suffix is: $suffix2输出结果:suffix is: text.gif.bak.//使用 #suffix2 is: txt //使用 ##操作符 ## 使用 *. 从左向右贪婪匹配到 text.gif.bak.

示例2,定义变量 url="www.1987.name"

echo ${url%.*}#移除 .* 所匹配的最右边的内容。www.1987

echo ${url%%.*}#将从右边开始一直匹配到最左边的 *. 移除,贪婪操作符。www

echo ${url#*.}#移除 *. 所有匹配的最左边的内容。1987.name

echo ${url##*.}#将从左边开始一直匹配到最右边的 *. 移除,贪婪操作符。name

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。