我使用下面的脚本中的所有文件的文件名替换字符替换中的所有文件的文件名字符到另一个目录中的另一个
#!/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
但要错误:
cannot mv P201706260001.txt to P201706260050001.txt: no such file or directory.
请帮忙解决这个问题。
取代单曲/ \ P20170626 */P20170626005 /'是很值得怀疑 – RomanPerekhrest
的正则表达式为'sed'和通配符壳都使用'* '但它意味着不同的(但相关的)事情。 shell中的'*'大致等同于'sed'中的'。*'。 '\ P ...'中的反斜杠很奇怪。 –
由于您已标记'bash',请考虑使用http://mywiki.wooledge.org/BashGuide/Parameters#Parameter_Expansion而不是sed ... – Sundeep