好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識(shí)庫 > Shell中處理包含空格的文件名實(shí)例

Shell中處理包含空格的文件名實(shí)例

熱門標(biāo)簽:旅游地圖標(biāo)注大全 地圖標(biāo)注超出范圍怎么辦 杭州機(jī)器人外呼系統(tǒng) 百度地圖的地圖標(biāo)注 excel地址地圖標(biāo)注 佛山高德地圖標(biāo)注中心 東莞電銷機(jī)器人價(jià)格一覽表 百度地圖標(biāo)注圖標(biāo)更換 陜西電銷卡外呼系統(tǒng)怎么安裝

今天在處理文件時(shí)遇到個(gè)問題,當(dāng)文件名包含空格時(shí),for循環(huán)就出問題了。

例如,我在當(dāng)前文件夾下建立3個(gè)文件名包含空格的文件:

復(fù)制代碼 代碼如下:
keakons-MacBook-Pro:test keakon$ touch "test 1"
keakons-MacBook-Pro:test keakon$ touch "test 2"
keakons-MacBook-Pro:test keakon$ touch "test 3"
keakons-MacBook-Pro:test keakon$ ls
test 1 test 2 test 3

然后for循環(huán)輸出文件名:
復(fù)制代碼 代碼如下:
keakons-MacBook-Pro:test keakon$ for file in `ls`;
> do echo $file;
> done
test
1
test
2
test
3

可以看到,文件名被分開了。

復(fù)制操作也不行:

復(fù)制代碼 代碼如下:
keakons-MacBook-Pro:test keakon$ mkdir ../bak
keakons-MacBook-Pro:test keakon$ for file in `ls`; do cp "$file" ../bak; done
cp: bak is a directory (not copied).
cp: test: No such file or directory
cp: 1: No such file or directory
cp: test: No such file or directory
cp: 2: No such file or directory
cp: test: No such file or directory
cp: 3: No such file or directory

要解決這個(gè)問題,當(dāng)然就要從單詞分隔符著手。而bash中使用的是$IFS(Internal Field Separator)這個(gè)變量,內(nèi)容為" \n\t":

復(fù)制代碼 代碼如下:
keakons-MacBook-Pro:test keakon$ echo $IFS

keakons-MacBook-Pro:test keakon$ echo "$IFS" | od -t x1
0000000    20  09  0a  0a                                               
0000004
keakons-MacBook-Pro:test keakon$ echo "" | od -t x1
0000000    0a                                                           
0000001

然后把它改成"\n\b",記得修改前先保存一下:

復(fù)制代碼 代碼如下:
keakons-MacBook-Pro:test keakon$ SAVEIFS=$IFS
keakons-MacBook-Pro:test keakon$ IFS=$(echo -en "\n\b")

現(xiàn)在再執(zhí)行上述命令就正常了:

復(fù)制代碼 代碼如下:
keakons-MacBook-Pro:test keakon$ for file in `ls`; do echo $file; done
test 1
test 2
test 3
keakons-MacBook-Pro:test keakon$ for file in `ls`; do cp "$file" ../bak; done
keakons-MacBook-Pro:test keakon$ ls ../bak
test 1 test 2 test 3

最后,別忘了恢復(fù)$IFS:

復(fù)制代碼 代碼如下:
keakons-MacBook-Pro:test keakon$ IFS=$SAVEIFS
keakons-MacBook-Pro:test keakon$ echo "$IFS" | od -t x1
0000000    20  09  0a  0a                                               
0000004
keakons-MacBook-Pro:test keakon$ IFS=$(echo -en " \n\t")
keakons-MacBook-Pro:test keakon$ echo "$IFS" | od -t x1
0000000    20  0a  09  0a                                               
0000004

標(biāo)簽:延邊 朝陽 雅安 南充 青島 通遼 西藏 隨州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Shell中處理包含空格的文件名實(shí)例》,本文關(guān)鍵詞  Shell,中,處理,包含,空格,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Shell中處理包含空格的文件名實(shí)例》相關(guān)的同類信息!
  • 本頁收集關(guān)于Shell中處理包含空格的文件名實(shí)例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章