我使用下面的脚本将所有文件的文件名中的字符替换为另一个
#!/bin/ksh
for e in /mapr/datalake/rawfiles/P20170626005/* ;
do mv "$e" "echo $e | sed -e 's/\P20170626*/P20170626005/g'";done
例如,尝试重命名P201706260001.txt => P201706260050001.txt
但是收到错误:
不能mv P201706260001.txt到P201706260050001.txt:没有这样的文件或者 。目录
请帮助解决这个问题。
答案 0 :(得分:1)
您的mv命令似乎存在问题。回声应该反过来。
使用分组和反向引用进行有效转换。 您可以将脚本修改为
<div class="text-center">
{sec-two-image1:image global="false"}
</div>
(。*) - 组尾随/前导文件名。
\ 1&amp; \ 2 - 反向引用尾随/前导文件名
答案 1 :(得分:0)
提示:使用类似的循环显示您的输入和输出,以查看您正在处理的内容,例如:
for e in /mapr/datalake/rawfiles/P20170626005/*
do
echo "$e"
echo "$e" | sed -e 's/\P20170626*/P20170626005/g'
done