我使用下面的腳本中的所有文件的文件名替換字符替換中的所有文件的文件名字符到另一個目錄中的另一個
#!/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