千家信息网

Shell中如何处理包含空格的文件名

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章主要介绍"Shell中如何处理包含空格的文件名",在日常操作中,相信很多人在Shell中如何处理包含空格的文件名问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"S
千家信息网最后更新 2025年01月19日Shell中如何处理包含空格的文件名

这篇文章主要介绍"Shell中如何处理包含空格的文件名",在日常操作中,相信很多人在Shell中如何处理包含空格的文件名问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Shell中如何处理包含空格的文件名"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

例如,我在当前文件夹下建立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中如何处理包含空格的文件名"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

文件 文件名 代码 空格 学习 更多 问题 帮助 不行 实用 接下来 内容 分隔符 单词 变量 命令 文件夹 文章 方法 理论 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 四川潮流软件开发服务参考价格 数据库pbf是什么意思 新乡市安嘉网络技术有限公司 安徽公司果蔬配送软件开发 数据库原理2019自考 初中生学软件开发 ping域名后dns服务器地址 中国互联网有什么科技含量 中纪委网络技术中心好不好 中电科 网络安全研究院 冉禾科技互联网有限公司沈阳 网络安全责任制考核办法 2700x 数据库性能 三国杀十周年服务器怎么样 开挂导致游戏服务器崩溃 数据库数据表设计表格 热血传奇服务器架设 软件参数保存在数据库 精臣b21无法连接服务器 杭州直播软件开发哪家信誉好 武汉平潭互联网科技有限公司 mysql数据库链接工具 应聘网络技术人员的业余爱好 网络安全手抄报英文 嵌入式软件开发区日料长沙 资源利用数据库的建设 余姚舜宇软件开发招聘 EI数据库子库 服务器返回信息错误啥意思 用多家网络安全产品弊端
0