linux 環境下處理檔名空格的情況

2021-08-03 22:00:13 字數 1098 閱讀 4730

linux環境去掉檔名空格有一下兩種方法: 方法

一、使用$ifs來處理

old=$ifs;

ifs=$'\n';

cd /home/arron/桌面/data/1月/1#

for file in $(ls *)

do#unzip -d /home/arron/桌面/aa $file

echo $file

done

ifs=$old

列印觀察檔名,檔名已經不會因為空格的原因被split了 方法

二、可以直接去掉檔名的空格,例如檔名是'a  b.txt',那麼linux缺省會認為是a和b.txt

在linux檔案系統中,一般來說我們可以用以下方法來遍歷某個目錄下的檔案。

for file in $(ls *); do

echo $

done

但是,由於for語句是按照單詞為單位(即空格)進行分割的,因此,當檔名稱中有空格的時候,就會出現乙個檔名被分成兩個或者多個檔案來讀的情況。比如,當前目錄下有下面幾個檔案:

a.txt b.txt 「c .txt」

上面的指令碼執行的結果就變成

a.txt

b.txt

c.txt

了。遇到這種情況怎麼辦?其實我們我可以用while語句加上read命令來輕鬆實現。

ls * | while read file; do

echo $

done

即先把每個檔案的名稱讀取到變數file中,然後再輸出到螢幕上。

實現了遍歷檔名帶有空格的檔案之後,我們所要做的就是修改檔名,除去檔名中的空格。用tr命令來實現。

echo $ | tr -d 『 『

將該結果儲存到變數new_file_name中,再用mv命令來重新命名檔案。

mv 「$」 $

注:由於檔名中可能有空格,所以必須用引號將檔名引起來。

整個指令碼如下:

ls * | while read file; do

old_file_name=$

new_file_name=`echo $ | tr -d ' '`

mv "$" "$"

done

bat for 處理帶空格的檔名

時常需要把乙個舊版本的svn專案轉化成新的工程.但是舊片的svn工程裡面還有很多的.svn資料夾.手工刪除這些資料夾顯然不是很好的方法.由是想到了寫批處理自動遍歷和刪除.svn資料夾.但是在寫批處理的時候遇到乙個問題.如果資料夾帶有空格的話.for命令只取空格前面的資料.在網上查了很久,試用了很多方...

git 檔名包含空格處理辦法

想要對乙個檔名中帶空格的檔案重新命名,同時新增git lfs支援。git mv cpp primer.pdf cpp primer 4 zh cn.pdf1.執行git lfs install開啟lfs功能 2.使用git lfs track命令進行大檔案追蹤 例如git lfs track png...

linux shell 點號 空格 檔名

今天在看 etc init.d nginx指令碼時,發現指令碼中存在大量行為 點號 空格 檔名 甚是不解。比如檔案開始的幾行 if r etc default nginx then etc default nginx fi.lib init vars.sh lib lsb init function...