linux shell 中 如何处理空格的路径?

linux shell 中 如何处理空格的路径?,第1张

#/bin/bash

SAVEIFS="$IFS"

myhome=`pwd`

IFS='

'

for str in `find . -type d`

do

          cd  "$str"

           echo "process $str"

           cd $myhome

 done

 IFS="$SAVEIFS"

有时候需要创建带有空格文件夹,虽然这不是一个好的习惯,但是偶尔会遇到。用的最多的是很多时候需要进入带有空格的文件夹,如"a b"是一个文件夹名。 创建:mkdir "a b" mkdir 'a b' mkdir a\ b 进入:cd "a b" cd 'a b' cd a\ b 由上可见,需要在带有空格的文件夹名前面加上引号(单引号或者双引号),另一种方法是在空格前面加\,\的意思是后面还有字符的意思。 切记,直接输名字是无法 *** 作成功的,如已经创建了文件夹"a b",直接终端输入cd a b会出现没有a文件夹的错误。

这个需要更改 shell分隔符为换行在for循环之前修改IFS变量IFS=$'\n' OLDIFS="$IFS"for i in `find . `doecho "$i"doneIFS="$OLDIFS"这样循环就会以换行作为单词分界.你的文件名如果出现换行,那就无能为力。虽然linux 支持文件名包含特殊字符但并不推荐,会导致别的脚本出错误。通常用下划线或短线代替空格。还有一种用find some|while read idoecho "$i"done用read i,每个循环读取一行,等价与用换行作为分隔符。记得采纳


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7355171.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-04
下一篇2023-04-04

发表评论

登录后才能评论

评论列表(0条)

    保存