shell脚本获取文件名、路径名、文件类型

1. 从字符串获取指定内容

从字符串中提取特定的信息,常用于获取文件名、文件类型、所在路径等。

1.1 获取字符串信息

用指定的方式(PATTERN)从字符串(PARAMETERS)中移除内容"\${PARAMETERS#PATTERN}" : 移除从开头匹配的字符串"\${PARAMETERS##PATTERN}": 移除从开头匹配最长的字符串"\${PARAMETERS%PATTERN}" : 移除从末尾匹配的字符串"\${PARAMETERS%%PATTERN}": 移除从末尾匹配最长的字符串

1.2 搜索并替换字符串中的信息

字符串的搜索与替换:"\${PARAMETERS/PATTERN/STRING}" : 从PARAMETERS中搜索PATTERN,并替换为STRING"\${PARAMETERS//PATTERN/STRING}": 从PARAMETERS中搜索全部的PATTERN,并替换为STRING"\${PARAMETERS/PATTERN}"		: 从PARAMETERS中搜索PATTERN,并删除"\${PARAMETERS//PATTERN}"		: 从PARAMETERS中搜索PATTERN,并全部删除

1.3 示例

########################################################################## File Name: getFilePathName.sh# Author: Toney Sun# mail: vip_13031075266@163.com# Created Time: 2020年04月17日 星期五 09时57分43秒# Function: 主要用来从字符串中获取文件名、路径名或者文件类型##########################################################################!/bin/bashstring=/mnt/hgfs/em嵌入式学习记录/shell/linuxShell-5/getFilePathName.shcat <<EOF
用指定的方式(PATTERN)从字符串(PARAMETERS)中移除内容
"\${PARAMETERS#PATTERN}" : 移除从开头匹配的字符串
"\${PARAMETERS##PATTERN}": 移除从开头匹配最长的字符串
"\${PARAMETERS%PATTERN}" : 移除从末尾匹配的字符串
"\${PARAMETERS%%PATTERN}": 移除从末尾匹配最长的字符串
EOFecho $stringecho "\${string#*/}="${string#*/}echo "\${string##*/}="${string##*/}echo "\${string%/*}="${string%/*}echo "\${string%%/*}="${string%%/*}cat <<EOF
字符串的搜索与替换:
"\${PARAMETERS/PATTERN/STRING}" : 从PARAMETERS中搜索PATTERN,并替换为STRING
"\${PARAMETERS//PATTERN/STRING}": 从PARAMETERS中搜索全部的PATTERN,并替换为STRING
"\${PARAMETERS/PATTERN}"		: 从PARAMETERS中搜索PATTERN,并删除
"\${PARAMETERS//PATTERN}"		: 从PARAMETERS中搜索PATTERN,并全部删除
EOFstring=/mnt/hgfs/em嵌入式学习记录/shell/linuxShell-5/getFilePathName.shecho "\${string/shell/SHELL}="${string/hell/HELL}echo "\${string//hell/HELL}="${string//hell/HELL}echo "\${string/hell}="${string/hell}echo "\${string//hell}="${string//hell}

运行结果如下:

toney@ubantu:/mnt/hgfs/em嵌入式学习记录/shell/linuxShell-5$ ./getFilePathName.sh 
用指定的方式(PATTERN)从字符串(PARAMETERS)中移除内容"${PARAMETERS#PATTERN}" : 移除从开头匹配的字符串"${PARAMETERS##PATTERN}": 移除从开头匹配最长的字符串"${PARAMETERS%PATTERN}" : 移除从末尾匹配的字符串"${PARAMETERS%%PATTERN}": 移除从末尾匹配最长的字符串

/mnt/hgfs/em嵌入式学习记录/shell/linuxShell-5/getFilePathName.sh
${string#*/}=mnt/hgfs/em嵌入式学习记录/shell/linuxShell-5/getFilePathName.sh${string##*/}=getFilePathName.sh${string%/*}=/mnt/hgfs/em嵌入式学习记录/shell/linuxShell-5${string%%/*}=字符串的搜索与替换:"${PARAMETERS/PATTERN/STRING}" : 从PARAMETERS中搜索PATTERN,并替换为STRING"${PARAMETERS//PATTERN/STRING}": 从PARAMETERS中搜索全部的PATTERN,并替换为STRING"${PARAMETERS/PATTERN}"		: 从PARAMETERS中搜索PATTERN,并删除"${PARAMETERS//PATTERN}"		: 从PARAMETERS中搜索PATTERN,并全部删除${string/shell/SHELL}=/mnt/hgfs/em嵌入式学习记录/sHELL/linuxShell-5/getFilePathName.sh${string//hell/HELL}=/mnt/hgfs/em嵌入式学习记录/sHELL/linuxSHELL-5/getFilePathName.sh${string/hell}=/mnt/hgfs/em嵌入式学习记录/s/linuxShell-5/getFilePathName.sh${string//hell}=/mnt/hgfs/em嵌入式学习记录/s/linuxS-5/getFilePathName.sh


上一篇:JMeter四种参数化方式


下一篇:RANSAC算法详解