Linux系統下除去檔名稱中的空格字元
阿新 • • 發佈:2019-02-19
在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