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)的前提下,交互式 ...
随机推荐
- 教你如何使用FusionInsight SqoopShell
摘要:Sqoop-shell是一个Loader的shell工具,其所有功能都是通过执行脚本"sqoop2-shell"来实现的. 本文分享自华为云社区<FusionInsig ...
- 靶机DC-2 rbash绕过+git提权
这个靶机和DC-1一样,一共5个flag.全部拿到通关. root@kali:/home/kali# nmap -sP 192.168.1.* 先扫一下靶机的IP地址,拿到靶机的地址为192.168. ...
- Bugku-你必须让他停下来
这道题使用burpsuite抓包就能做,一开始抓包发到repeater之后flag不一定可以直接得到,原因是flag藏在特定的那张图片后面,我们一直go到那张图片便可以得到flag. 进入题目给的网址 ...
- 7年老Android收到阿里offer,跟领导提离职被怼:为年薪百万不做兄弟?
在当今社会,钱就是衡量一个人价值的标准,如果你在一家公司,领导再怎么重用你,但是薪资待遇却很低,这样根本是很难留住人,毕竟工作就是为了赚钱,要是连工资都满足不了,谈其他根本就是扯淡. 最近在职业论坛看 ...
- UNIX环境高级编程APUE练习3.2-不用fcntl实现dup2的功能
1 题面 编写与dup2功能相同的函数,要求不调用fcntl函数,并且要有正确的出错处理. 2 基本思路 不能用fcntl,能够返回一个文件描述符的只有open和dup.而open会创建一个新的文件表 ...
- Special Forms and Syntax Sugars in Clojure
(...): function literals, p40, 64; '(...): suppress evaluation, p24; _(...): comments, p18; ".. ...
- spring中的组合模式
org.springframework.cache.support.CompositeCacheManager /* * Copyright 2002-2016 the original author ...
- 终极蛇皮上帝视角之铁头娃之鲁迅之暑假闲的慌之bilibili看尚学堂网课的非洲酋长java小复习
转自https://www.sxt.cn/Java_jQuery_in_action/eight-cache-problem.html 第一个点 自动装箱与拆箱的功能是所谓的"编译器蜜糖(C ...
- Java集合框架详细总结
一:Collection集合 呼~,历过好几天的奋战终于把集合框架肝完了,b站某马老师讲的是真的非常详细而且动听,原理给你分析得明明白白的,此前也找了许多关于集合这一大章节的视频,发现更多的是针对于使 ...
- C#多线程---委托实现异步
一.概述 通过调用ThreadPool的QueueUserWorkItem方法来来启动工作者线程非常方便,但委托WaitCallback指向的是带有一个参数的无返回值的方法. 如果我们实际操作中需要有 ...