1. 程式人生 > >Linux系統下除去檔名稱中的空格字元

Linux系統下除去檔名稱中的空格字元

   在Linux檔案系統中,一般來說我們可以用以下方法來遍歷某個目錄下的檔案。 for file in $(ls *); do  echo ${file} done 但是,由於for語句是按照單詞為單位(即空格)進行分割的,因此,當檔名稱中有空格的時候,就會出現一個檔名被分成兩個或者多個檔案來讀的情況。比如,當前目錄下有下面幾個檔案: a.txt b.txt “c .txt” 上面的指令碼執行的結果就變成 a.txt b.txt c .txt 了。 遇到這種情況怎麼辦?其實我們我可以用while語句加上read命令來輕鬆實現。 ls * | while read file; do  echo ${file} done 即先把每個檔案的名稱讀取到變數file中,然後再輸出到螢幕上。 實現了遍歷檔名帶有空格的檔案之後,我們所要做的就是修改檔名,除去檔名中的空格。用tr命令來實現。 echo ${old_file_name} | tr -d ‘ ‘ 將該結果儲存到變數new_file_name中,再用mv命令來重新命名檔案。 mv “${old_file_name}” ${new_file_name} 注:由於檔名中可能有空格,所以必須用引號將檔名引起來。 整個指令碼如下: ls * | while read file; do               old_file_name=${file}               new_file_name=`echo ${old_file_name} | tr -d ' '`               mv "${old_file_name}" "${new_file_name}" done