我有一個KSH簡單腳本,用於創建我們在FTP服務器上收到的文件列表。使用空格的文件名重命名失敗
sF_Array=(` find . -type f ... `)
sF_len=${#sF_Array[*]}
for name in ${sF_Array[@]}
do
basename "$name" # This removes the leading slashdot
done>$ddw_data/FTP_FILE_LIST
挑戰是,一些文件有空格的(文件從微軟的Windows機器來給我們),所以我用rename
for name in ${sF_Array[@]}
do
rename 's/ /_/g' "$name" # This removes spaces in file names
basename "$name" # This removes the leading slashdot
done>$ddw_data/FTP_FILE_LIST
,但它並沒有工作。這是FTP_FILE_LIST
樣子(通知第二和第三記錄/文件名):
TCA~PRE~PREP~9939985~ONTDTVE3A~33~F~3922~R22-100~000806451655~20130819~040320.XML
J
MEM~ETT~CVT~654687-MEMTO~jgm16227~1~P~1100~R24-500~033068658187~20130813~234639.XML
J
MEM~FUN~TEST~312326-MEMTO~jgm16227~2~P~1100~R24-200~035696412416~20130813~234638.XML
J-MEM~DCA~FVT~5333131~ONTDTVD1C~1~F~3420~DECA1MR0-01~XED1B1201A3313~20130827~201916.XML
TCA~COS~COSM~95518585~ONTDTVE7A~63~F~3911~R22-300~00065881346~20130817~000300.XML
我想FTP_FILE_LIST
看起來像這樣代替(注意第2和第3的記錄/文件名):
TCA~PRE~PREP~9939985~ONTDTVE3A~33~F~3922~R22-100~000806451655~20130819~040320.XML
J_MEM~ETT~CVT~654687-MEMTO~jgm16227~1~P~1100~R24-500~033068658187~20130813~234639.XML
J_MEM~FUN~TEST~312326-MEMTO~jgm16227~2~P~1100~R24-200~035696412416~20130813~234638.XML
J-MEM~DCA~FVT~5333131~ONTDTVD1C~1~F~3420~DECA1MR0-01~XED1B1201A3313~20130827~201916.XML
TCA~COS~COSM~95518585~ONTDTVE7A~63~F~3911~R22-300~00065881346~20130817~000300.XML
什麼時我錯過了?
我不知道這件事。謝謝。我認爲引用該變量將解析爲文件名。不幸的是,問題依然存在。 – Chris
更新你的問題代碼,我會看看。 – jmh