mac shell如何在函数的字符串中加入前缀

mac shell如何在函数的字符串中加入前缀,第1张

除了用外部的命令比如expr、awk、sed等等,内置方法可以用截取、替换等方式得到一个新的字符串,如果新的字符串和原来的字符串有变化,说明变量包含字符串。

用替换为例:查找变量a【值复制为hello world】中是否有  字符串or

截取、替换的方法如下:

${string#substring}    从变量$string的开头, 删除最短匹配$substring的子串  

${string##substring}    从变量$string的开头, 删除最长匹配$substring的子串  

${string%substring}    从变量$string的结尾, 删除最短匹配$substring的子串  

${string%%substring}    从变量$string的结尾, 删除最长匹配$substring的子串    

${string/substring/replacement}    使用$replacement, 来代替第一个匹配的$substring  

${string//substring/replacement}    使用$replacement, 代替所有匹配的$substring  

${string/#substring/replacement}    如果$string的前缀匹配$substring, 那么就用$replacement来代替匹配到的$substring  

${string/%substring/replacement}    如果$string的后缀匹配$substring, 那么就用$replacement来代替匹配到的$substring  

批量在文件名前面添加前缀的方法

第1,打开电脑上已经安装好的优速文件批量重命名,如下图所示点击【添加文件】或【添加目录】按钮,将需要加前缀的文件全部导入到软件中,进入下一步 *** 作。

第2,然后进行设置,命名方式选择“插入”;插入类型选择“自定义内容”;插入内容右边输入前缀文字内容;插入位置选择“文件名头”。可以一边设置一边在右边预览新文件的名称,方便我们使用。

第3,新文件名预览没问题后说明设置完成了,然后点击右上角的按钮,启动批量重命名程序。当d出成功的提示时说明文件名全部成功添加了前缀。

第4,通过小编的案例可以看到,所有文件名称的前面都添加了统一的前缀字符,批量处理成功。

修改文件名可以有不同的命令方式,比如rename, mv都可以实现

对于单个的文件,可以直接使用以上的命令,那如果有大量的类似格式的文件名需要修改成其他格式的,该如何呢?

比如某次测试后,保存的文件为 Lan1.txt, Lan2.txt,....Lan100.txt

这一百个文件需要在前面添加前缀变成类似 ch7_Lan1.txt,如果你还想使用mv来一个一个...多痛苦啊

当前文件夹下,文件修改有4种方式

1. 使用while Loop加 ${//}来实现Lan到 ch7_Lan的替换

点击(此处)折叠或打开

find . -name "Lan*txt" -type f | read files

do

new=${files/Lan/ch7_Lan}

mv $files $new

done

2. 充分利用 awk的分隔符功能来实现

点击(此处)折叠或打开

ls *Lan* | awk 'BEGIN{FS="Lan"OFS="ch7_Lan"}{printf "mv "$0" "$1=$1print $0}' | sh

首先,修改 FS和 OFS,输入和输出的分隔符

其次,使用 awk中的命令,拼接 “mv Lan1.txt ch7_Lan1.txt”这条命令

最后,使用|sh来执行一个 shell命令来完成 mv动作

其中,$1=$1是必须的,这个是完成 Lan===>ch7_Lan的关键(其实是可以使用 $2=$2等来替换,只要一个赋值动作而已)

奇怪的是,难道没有赋值动作,分隔符的改变就不能检测出来么??

3. 使用 awk的内置命令,gsub和 system来实现替换和命令执行

点击(此处)折叠或打开

ls "*Lan*" | awk '{org=$0gsub("Lan", "ch7_Lan")system("mv "org" "$1)}'

首先保存原始的数据

其次修改 Lan为 ch_Lan

最后执行mv动作


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/7933397.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-11
下一篇2023-04-11

发表评论

登录后才能评论

评论列表(0条)

    保存