我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Shell中处理包含空格的文件名实例

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Shell中处理包含空格的文件名实例

今天在处理文件时遇到个问题,当文件名包含空格时,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)这个变量,内容为" nt":

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

然后把它改成"nb",记得修改前先保存一下:

keakons-MacBook-Pro:test keakon$ SAVEIFS=$IFS
keakons-MacBook-Pro:test keakon$ IFS=$(echo -en "nb")

现在再执行上述命令就正常了:

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 " nt")
keakons-MacBook-Pro:test keakon$ echo "$IFS" | od -t x1
0000000 20 0a 09 0a
0000004

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Shell中处理包含空格的文件名实例

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Shell中处理包含空格的文件名实例

今天在处理文件时遇到个问题,当文件名包含空格时,for循环就出问题了。 例如,我在当前文件夹下建立3个文件名包含空格的文件: keakons-MacBook-Pro:test keakon$ touch "test 1"keakons-Ma
2022-06-04

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

这篇文章主要介绍“Shell中如何处理包含空格的文件名”,在日常操作中,相信很多人在Shell中如何处理包含空格的文件名问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Shell中如何处理包含空格的文件名”的疑
2023-06-09

Linux如何查找处理文件名后包含空格的文件

这篇文章给大家分享的是有关Linux如何查找处理文件名后包含空格的文件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。当Linux下文件名中出现空格这类特殊情况话,如何查找或确认那些文件名后有空格呢? 又怎么批量替
2023-06-09

Linux查找处理文件名后包含空格的文件(两种方法)

当Linux下文件名中出现空格这类特殊情况话,如何查找或确认那些文件名后有空格呢? 又怎么批量替换处理掉这些空格呢? 方法1: 输入文件名后使用Tab键,如果使用Tab键后面出现 这样的可见字符,那么该文件名包含空格。当然,这个方法弊端很
2022-06-04

Shell怎么处理带空格的文件名

本篇内容主要讲解“Shell怎么处理带空格的文件名”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Shell怎么处理带空格的文件名”吧!现在很多人命名的时候都喜欢用空格,例如“An Introdu
2023-06-09

Shell处理带空格的文件名的方法

现在很多人命名的时候都喜欢用空格,例如“An Introduction.doc”。但是这种命名方式给Linux命令行工具和Shell带来了困扰,因为大多数命令中,都是默认以空格做为值与值之间的分隔符,而不是做为文件名的一部分。 看下面的脚本
2022-06-04

Linux下怎么处理包含空格和特殊字符的文件名

这篇文章主要讲解了“Linux下怎么处理包含空格和特殊字符的文件名”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux下怎么处理包含空格和特殊字符的文件名”吧!我们经常会看到文件名和文件
2023-06-16

lxml怎么处理包含多个命名空间的XML文档

在lxml中处理包含多个命名空间的XML文档,可以使用register_namespace()方法来注册命名空间,然后通过XPath表达式来选择具有相应命名空间的元素。以下是一个示例代码,演示了如何处理包含多个命名空间的XML文档:fr
lxml怎么处理包含多个命名空间的XML文档
2024-05-15

bat批处理实现的创建10个文件夹且文件夹再包含5个空文件夹

这篇文章主要介绍“bat批处理实现的创建10个文件夹且文件夹再包含5个空文件夹”,在日常操作中,相信很多人在bat批处理实现的创建10个文件夹且文件夹再包含5个空文件夹问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家
2023-06-09

linux命令行下文件名中有空格怎么处理

这篇文章主要介绍了linux命令行下文件名中有空格怎么处理,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Q:我在树莓派命令行模式下使用mplayer播放单首音乐,因为文件名中
2023-06-12

详解Shell 命令行批量处理图片文件名的实例

Shell 命令行批量处理图片文件名 前言: 从网上下载了一堆图片,有的是*.jpg的,有的是*.jpeg的。并且文件名有长有短,很是糟心。因此,我想把这些文件给全部整理好,当然是用shell来处理啦! 说干就干。 循环所有文件 首先,我把
2022-06-04

Shell命令行批量处理图片文件名的示例分析

小编给大家分享一下Shell命令行批量处理图片文件名的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Shell 命令行批量处理图片文件名前言:从网上下载了
2023-06-09

如何实现批处理将文件侠内的文件名导入表格对应名称中

这篇文章主要介绍“如何实现批处理将文件侠内的文件名导入表格对应名称中”,在日常操作中,相信很多人在如何实现批处理将文件侠内的文件名导入表格对应名称中问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何实现批处理
2023-06-08

编程热搜

目录