linux 脚本中对文件名中包含空格的处理

在脚本中处理文件时,如果文件名中包含空格,会出现“No such file or directory”的错误,这是因为 bash 将空格当成了变量分隔符。在 bash 中,使用IFS变量进行分割,我们可以在脚本中将IFS重新定义成"\n",等脚本执行完毕后再将IFS恢复成原来(当然要事先备份IFS):

rootDir=$1
cd $rootDir
allAudioFile=$(find $1 -name "*\.mp3")

# 备份原IFS
IFS_BACKUP=$IFS

# 将IFS定义为换行
IFS=$(echo -en "\n\b")

for oneAudioFile in $allAudioFile
do
  mv -f "$oneAudioFile" $rootDir
done

# 恢复原IFS
IFS=$IFS_BACKUP
posted @ 2024-01-05 22:42  汉学  阅读(21)  评论(0)    收藏  举报