单个Excel文件测试批量修改是否正确;
$ echo 批量修改文件名old1.xlsx | sed -E 's/old/new/'
目录下所有Excel文件,测试批量修改是否正确;
$ ls *.xlsx | sed -E 's/old/new/'
使用echo命令查看:文件名修改前和修改后的结果,使用 for 循环进行迭代:
$ for f in `ls *.xlsx`; do echo $f `echo $f | sed -E 's/old/new/'`; done
使用mv命令修改文件名(注:上面命令都只是测试修改文件名后的结果,是否是正确,并没有实际修改文件名);
$ for f in `ls *.xlsx`; do mv $f `echo $f | sed -E 's/old/new/'`; done;echo '---------------------------';ls *.xlsx;
将Excel文件名中的小写new,改成大写OLD;
$ ls *.xlsx; for f in `ls *.xlsx`; do mv $f `echo $f | sed -E 's/new/OLD/'`; done ;ls *.xlsx;
将Excel文件名中的改成大写OLD改成小写new,可以看到是没有替换成功,因为我写的是小写old;
$ echo '修改前:' ls *.xlsx; for f in `ls *.xlsx`; do mv $f `echo $f | sed -E 's/old/new/'`; done ; echo '修改后:' ls *.xlsx;
sed命令中加入参数"i",忽略大小写,将大写OLD替换成小写new,替换成功!!!
$ echo '修改前:' ls *.xlsx; for f in `ls *.xlsx`; do mv $f `echo $f | sed -E 's/old/new/i'`; done ; echo '修改后:' ls *.xlsx;
总结:问题
sed ‘s/*//’是什么意思??
“s/查找内容/替换为的字串/'s代表是替换的意思,这里查找内容是: * 因为星号是sed的特殊字符,进行了转义。 替换为的字符串:这里没有填写任何内容,即是空字符串 意思就是 查找文件中的星号(*),并删除(替换为空)。 这里会对文件每一行进行查找替换,只替换(删除)每行第一处星号,后面的不删。如果全部都删,后面再加上g就行”
参数说明:s/查找内容/替换为的字串/’;s代表是替换的意思;sed -e是可以在同一行内执行多条命令,而不加-e则不可以; (例:sed -e ‘s/xx/xx/’);sed i 是忽略大小写,而不加i则是匹配大小写的;sed g 全局替换,而不加则只是替换(删除)每行第一处匹配到的数据进行替换;sed 转译;sed 替换为的字符串:这里没有填写任何内容,即是空字符串;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)