批量修改含空格的文件名「Linux」


1、問題:文件批量重命名和處理文件名中的空格

  • 如果文件名中有空格,在執行以下shell腳本的時候會出錯。
  • shell 腳本
for filename in `ls`
do
   echo $filename
done
  • 執行結果:會將帶空格的文件名,以空格作為截分,分兩次(多次)輸出。

2、原因分析及對策

  • 原因:Shell 腳本中有個變量叫 IFS(Internal Field Seprator) ,內部域分隔符。默認是 space, tab, newline 來拆解讀入的變量,然后對特殊字符進行處理,最后重新組合賦值給該變量。

  • 對策:只需要重置改變量,用完以后記得還原變量。

3、 示例代碼

  • 例子1:寫成一行
IFS_old=$IFS; IFS=$'\n';for name in `ls`; do mv $name LW_$name; done; IFS=$IFS_old;
  • 例子2:寫成多行
IFS_old=$IFS
IFS=$'\n'

for name in `ls` 
do 
    mv $name LW_$name
done

IFS=$IFS_old


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM