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/bash
string=/mnt/hgfs/em嵌入式学习记录/shell/linuxShell-5/getFilePathName.sh
cat <<EOF
用指定的方式(PATTERN)从字符串(PARAMETERS)中移除内容
"\${PARAMETERS#PATTERN}" : 移除从开头匹配的字符串
"\${PARAMETERS##PATTERN}": 移除从开头匹配最长的字符串
"\${PARAMETERS%PATTERN}" : 移除从末尾匹配的字符串
"\${PARAMETERS%%PATTERN}": 移除从末尾匹配最长的字符串
EOF
echo $string
echo "\${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,并全部删除
EOF
string=/mnt/hgfs/em嵌入式学习记录/shell/linuxShell-5/getFilePathName.sh
echo "\${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
收录在《shell脚本学习》
shell脚本获取文件名、路径名、文件类型的更多相关文章
- struts文件上传,获取文件名和文件类型
struts文件上传,获取文件名和文件类型 Action中还有两个属 性:uploadFileName和uploadContentType,这两个属性分别用于封装上传文件的文件名.文件类型.这是S ...
- linux shell 脚本获取和替换文件中特定内容
1.从一串字符串中获取特定的信息 要求1:获取本机IP:menu.lst为系统镜象的IP配置文件,需要从中获取到本机IP信息(从文件获取信息) timeout title live find --se ...
- JavaScript input file上传前获取文件名、文件类型、文件大小等信息
document.getElementById("productImgInput").files[0].type document.getElementById("pro ...
- JavaScript根据文件名判断文件类型
//JavaScript根据文件名判断文件类型 var imgExt = new Array(".png",".jpg",".jpeg",& ...
- 如何使用shell脚本快速排序和去重文件数据
前面写过一篇通过shell脚本去重10G数据的文章,见<用几条shell命令快速去重10G数据>.然而今天又碰到另外一个业务,业务复杂度比上次的单纯去重要复杂很多.找了很久没有找到相应的办 ...
- Centos7下crontab+shell脚本定期自动删除文件
问题描述: 最近有个需求,就是rsync每次同步的数据量很多,但是需要保留的数据库bak文件 保留7天就够了,所以需要自动清理文件夹内的bak文件 解决方案: 利用shell脚本来定期删除文件夹内的任 ...
- Shell脚本使用汇总整理——文件夹及子文件备份脚本
Shell脚本使用汇总整理——文件夹及子文件备份脚本 Shell脚本使用的基本知识点汇总详情见连接: https://www.cnblogs.com/lsy-blogs/p/9223477.html ...
- 关于使用java执行shell脚本获取centos的硬盘序列号和mac地址
1.获取硬盘序列号: 新建shell脚本文件: identifier.sh, 内容为: diskdata=`fdisk -l` diskleft=${diskdata#*"identifie ...
- 014-交互式Shell和shell脚本获取进程 pid
Linux 的交互式 Shell 与 Shell 脚本存在一定的差异,主要是由于后者存在一个独立的运行进程 1.交互式 Bash Shell 获取进程 pid 在已知进程名(name)的前提下,交互式 ...
随机推荐
- 官宣|VS Code 1.59 发布!Terminal 可以跨窗口移动了!
欢迎使用 2021 年 7 月版的 Visual Studio Code.我们希望您会喜欢此版本中的许多更新与改进,以下是其中的一些高亮: 扩展视图的改进 - 丰富的扩展详细信息悬停,新的运行状态标签 ...
- Windows协议 LDAP篇 - 域权限
windows 访问控制模型 也就是大名鼎鼎的ACM,access control mode 由两部分组成的. 访问令牌(access tokens) 其中包含有关登录用户的信息(User SID,G ...
- Salesforce Integration 概览(六) UI Update Based on Data Changes(UI自动更新基于数据变更)
Salesforce用户界面必须由于Salesforce数据的更改而自动更新.这个场景其实在我所经历的项目中用到的不是特别多,因为客户可能直接点击刷新按钮就直接看到了最新的数据,而不是那种一直不刷新然 ...
- Compile Java Codes in Linux Shell instead of Ant Script
The following is frequently used ant script, compile some java source codes with a libary path, then ...
- 机器学习:正态方程 python实现
目录 前言 一.算法介绍 二.核心算法 1. 公式 2.python实现 总结 前言 使用python简单实现机器学习中正态方程算法. 一.算法介绍 与梯度下降算法相比,正态方程同样用于解决最小化代价 ...
- 位(bit)、字节(Byte)、字(Word)、双字(Dword)之间的关系
位(bit): bit(简写:b),是计算机数据存储最小的单位,二进制中,0或者1就是一个位(比特位)bit. 字节: Byte(简写:B),是计算机信息技术用于计量存储容量的一种计量单位,通常情况下 ...
- Linux、Windows 下手动生成 sha256 等类型的校验文件
目录 1 - 校验文件的作用 2 - Linux 下生成校验文件 3 - Windows 下生成校验文件 参考资料 版权声明 1 - 校验文件的作用 从网服务器下载文件,尤其是比较大的文件时,很容易由 ...
- 题解—P2218 [HAOI2007]覆盖问题
一道不错的题,主要就是一个思路点,想到就行了,想不到就一直卡着. 看完题解之后发现挺简单,实际上自己挣扎半天也咩有想到. 一开始想类比成一维之后贪心,后来被同机房大佬 \(hack\) 掉了. sol ...
- WPF 饼状图,柱形图,折线图 (3 饼状图)
网址:https://www.cnblogs.com/CSSZBB/p/12746214.html 饼状图相对来说复杂一些.因为需要计算很多坐标,线来看下这个列子. 圆首先想到Ellipse.但是El ...
- Qt Model/View(模型/视图)结构(无师自通)
Model/View(模型/视图)结构是 Qt 中用界面组件显示与编辑数据的一种结构,视图(View)是显示和编辑数据的界面组件,模型(Model)是视图与原始数据之间的接口. GUI 应用程序的一个 ...