Shell中處理包含空格的文件名實(shí)例
今天在處理文件時(shí)遇到個(gè)問(wèn)題,當(dāng)文件名包含空格時(shí),for循環(huán)就出問(wèn)題了。
例如,我在當(dāng)前文件夾下建立3個(gè)文件名包含空格的文件:
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)輸出文件名:
> do echo $file;
> done
test
1
test
2
test
3
可以看到,文件名被分開(kāi)了。
復(fù)制操作也不行:
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è)問(wèn)題,當(dāng)然就要從單詞分隔符著手。而bash中使用的是$IFS(Internal Field Separator)這個(gè)變量,內(nèi)容為" \n\t":
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$ IFS=$(echo -en "\n\b")
現(xiàn)在再執(zhí)行上述命令就正常了:
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:
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
相關(guān)文章
實(shí)現(xiàn)自動(dòng)清除日期目錄shell腳本實(shí)例代碼
這篇文章主要介紹了實(shí)現(xiàn)自動(dòng)清除日期目錄shell腳本實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-04-04Linux下利用Opencv打開(kāi)筆記本攝像頭問(wèn)題
這篇文章主要介紹了Linux下利用Opencv打開(kāi)筆記本攝像頭問(wèn)題,需要的朋友可以參考下2017-08-08Linux下is not in the sudoers file的解決
當(dāng)我們使用sudo命令切換用戶的時(shí)候可能會(huì)遇到提示以下錯(cuò)誤:用戶名 is not in the sudoers file.本文給大家分享原因分析及解決方案,感興趣的朋友跟隨小編一起看看吧2023-02-02shell腳本實(shí)現(xiàn)磁盤監(jiān)控系統(tǒng)
這篇文章主要介紹了shell腳本實(shí)現(xiàn)磁盤監(jiān)控系統(tǒng),幫助大家更好的利用shell腳本管理數(shù)據(jù),感興趣的朋友可以了解下2020-09-09shell腳本將Oracle服務(wù)器中數(shù)據(jù)定時(shí)增量刷新到ftp服務(wù)器中
這篇文章主要介紹了shell腳本將Oracle服務(wù)器中數(shù)據(jù)定時(shí)增量刷新到ftp服務(wù)器中,非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-08-08