校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

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

Shell中處理包含空格的文件名實例

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

今天在處理文件時遇到個問題,當文件名包含空格時,for循環就出問題了。

例如,我在當前文件夾下建立3個文件名包含空格的文件:

復制代碼 代碼如下:
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循環輸出文件名:
復制代碼 代碼如下:
keakons-MacBook-Pro:test keakon$ for file in `ls`;
> do echo $file;
> done
test
1
test
2
test
3

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

復制操作也不行:

復制代碼 代碼如下:
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

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

復制代碼 代碼如下:
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",記得修改前先保存一下:

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

現在再執行上述命令就正常了:

復制代碼 代碼如下:
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

最后,別忘了恢復$IFS:

復制代碼 代碼如下:
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

標簽:延邊 朝陽 雅安 南充 青島 通遼 西藏 隨州

巨人網絡通訊聲明:本文標題《Shell中處理包含空格的文件名實例》,本文關鍵詞  Shell,中,處理,包含,空格,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Shell中處理包含空格的文件名實例》相關的同類信息!
  • 本頁收集關于Shell中處理包含空格的文件名實例的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 铜梁县| 邵武市| 塘沽区| 宝坻区| 通河县| 沾化县| 辽阳市| 凤城市| 阜宁县| 壤塘县| 甘德县| 广河县| 安图县| 辽阳县| 米林县| 司法| 二连浩特市| 泗阳县| 金华市| 喀喇| 乐陵市| 凤翔县| 资溪县| 绥棱县| 东莞市| 正镶白旗| 泸溪县| 阜康市| 桂平市| 北辰区| 临城县| 文登市| 西和县| 天津市| 黔江区| 巨野县| 南木林县| 忻城县| 芷江| 额济纳旗| 潜山县|