千家信息网

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

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要介绍"Shell中如何处理包含空格的文件名",在日常操作中,相信很多人在Shell中如何处理包含空格的文件名问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"S
千家信息网最后更新 2025年11月07日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安全错误 数据库的锁怎样保障安全 软件开发如何评估工作量 2008数据库桌面配置 分离数据库更新统计信息 pc我的世界服务器创建 网络安全风险等级划分标准 网络安全检查弱口令 易语言mdb数据库操作 7网络安全视频教程 平台与数据库是什么意思 保证网络安全最重要的核心 日本樱花云服务器免费网站GIF 数据库低版本附加到高版本 做软件开发到底怎么样 临夏州国家网络安全宣传 凤凰之神是东北服务器吗 华为手机激活显示网络服务器繁忙 淮安网络营销软件开发创新服务 吴中区口碑好的网络技术 数据库怎么在标题下添加内容 移动软件开发产品经理职责 中国网络安全有多少大学生 小学生网络安全绘画大全 网络安全p p t 软件开发项目工期 搞笑网络安全稳定风险隐患 互联网高科技占gdp r语言怎样导入外部的数据库 网络安全信息化与群众诉求 我的世界检测服务器管理员指令 铁路职工网络安全意识
0