- 浏览: 107682 次
文章分类
最新评论
Shell中处理包含空格的文件名的方法。
在处理文件时遇到个问题,当文件名包含空格时,for循环就出问题了。
例如,我在当前文件夹下建立3个文件名包含空格的文件:
然后for循环输出文件名:
可以看到,文件名被分开了。
复制操作也不行:www.jbxue.com
要解决这个问题,当然就要从单词分隔符着手。而bash中使用的是$IFS(Internal Field Separator)这个变量,内容为" \n\t":
然后把它改成"\n\b",记得修改前先保存一下:
现在再执行上述命令就正常了:
最后,别忘了恢复$IFS:
在处理文件时遇到个问题,当文件名包含空格时,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
可以看到,文件名被分开了。
复制操作也不行:www.jbxue.com
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
发表评论
-
linux关机方法:Linux关机与重启命令
2015-03-25 15:57 461linux快速关机技巧:Linux ... -
tp-link路由器设置方法分享
2014-09-09 17:02 569tp-link路由器设置方法收藏 在家里上 ... -
shell脚本:自动发送密码抓取远程日志的方法
2014-08-15 22:38 1343转自:http://www.cnblogs.com/yes ... -
如何查看Linux是32位还是64位的方法?
2014-08-11 06:16 572查看Linux是32位还是64位的方法 ... -
linux输入输出重定向详解(转)
2014-08-11 06:15 1627linux中使用重定向符号可以实现输出输入重定向,默认条件下 ... -
apache rewrite规则白名单配置方法
2014-06-13 16:44 1323如何在apache中使用rewrite规则配置白名单,这里分 ... -
Apache Rewrite重写规则配置
2014-06-13 16:43 72413个实用的Apache Rewrite重写规则,做个记录, ... -
linux 开机启动脚本顺序
2014-03-23 22:25 771linux 开机启动脚本顺序 linux 开机启 ... -
centos 6.3 64位下安装mysql5.5.36
2014-03-20 09:14 590准备如下安装包: 1.MySQL-server-5.5.36 ... -
Linux下磁盘管理命令df与du
2013-07-04 16:06 683对磁盘进行查看和控制的两个linux命令,df和du。 一、 ... -
hdparm--Linux测试硬盘速度的命令
2013-07-04 16:00 1319hdparm 命令 功能说明:显示与设定硬盘的参数。 语法: ... -
linux解压命令tar的用法
2013-06-26 22:52 813tar命令 tar [-cxtzjvfpPN] 文件与目录 . ... -
ssh连接因超时闲置断开的解决方法
2013-06-26 22:51 792如何避免SSH连接因超时闲置断开? 用SSH过程连接时,经常 ... -
找回 linux root密码的几种方法
2013-06-26 22:49 682第1种方法: 1.在系统进入单用户状态,直接用passwd r ... -
linux下/etc/passwd文件选项 中文说明
2013-06-07 07:06 1528/etc/passwd 文件是系统的主要文件之一。该文件中包含 ... -
解决Apache 本地服务器启动后又自动停止的问题
2013-06-07 07:03 833apache本地服务器,启动后又自动停止: setup_inh ... -
apache虚拟主机设置泛域名的方法
2013-06-07 07:01 1319在apache虚拟主机中设置泛域名解析,主要是用到Server ... -
rsync 数据同步使用详解
2013-06-07 06:59 822rsync 是很强大的同步工具。不少project都提供 ht ... -
linux下Squid反向代理搭建CDN缓存服务器的方法详解
2013-06-07 06:57 1632在移动机房放置一台CDN代理服务器,通过智能DNS解析,让电信 ... -
Linux的Find命令使用举例
2013-06-01 22:48 1115linux命令之find命令使用举例。 在当前目录和子目录 ...
相关推荐
但是这种命名方式给Linux命令行工具和Shell带来了困扰,因为大多数命令中,都是默认以空格做为值与值之间的分隔符,而不是做为文件名的一部分。 看下面的脚本,我们可以了解的更清楚: 执行的结果如下: 实际上,...
主要介绍了Shell中处理包含空格的文件名实例,需要的朋友可以参考下
在批量处理音频文件时候使用下面的脚本发现含有空格的文件名并不能被处理; #$1: 遍历的文件夹 rootDir=$1 cd $rootDir allAudioFile=$(find $1 -name *\.mp3) for oneAudioFile in $allAudioFile do mv -f $...
正则表达式的基本元素包括普通字符和元字符,在Linux shell里面,常用的正则表达式元字符集为:S={* . ^ $ [] \ \<\> \{\} \{n,\} \{n,m\} },每一个元字符都有自己在正则表达式中的含义,下面来介绍一下...
由于自己经常利用浏览器插件下载网页图片,由此产生很多的文件夹和文件,这些文件夹的名字多半是网页的title,导致文件夹名很长,文件名多是些很长的数。感觉这样的状况不是很好就自己用java实现了简单的shell来管理...
其中命令名、选项、参数之间使用空格隔开,多余的空格将被忽略,而用方括号括起来的部分表明该项是可省略的,如直接在提示符后面输入命令date,显示当前的日期和时间。下面介绍命令各组成部分的含义和作用。 (1)命令名...
例如,空格和括号由shell特殊处理。 unf重命名了这些文件,因此,当使用Windows的朋友向您发送名称令人讨厌的zip文件时,您就不必再烦恼了。 使用载货安装install unf这将安装到〜/ .cargo / bin,因此请确保该文件...
filename # 注意点号(.)和文件名中间有一空格 或 source filename 实例 创建两个 shell 脚本文件。 test1.sh 代码如下: #!/bin/bash # author:软件开发网 # url:www.mscto.com url=”http://www.mscto.com” test...
包括.exe结尾的、.com结尾的可执行程序,包括.bat结尾的、.cmd结尾的批处理程序,还有.vbs结尾的、.ps1结尾的脚本程序。均可以使用如下方式运行程序: <程序文件名>.<后缀> [参数列表] 但是请注意,这里的<...
必须包含你的姓名,学生号以及你的SHELL脚本文件如何使用的简介。你还必须确认在Bash SHELL中可以运行你的脚本文件。为了使你的脚本文件输出更具有可读性,请在合适的地方用”\n”和注释。还要考虑脚本的结构和...
编写一个C语言程序作为Linux内核的shell命令行解释程序,所执行的结果需和系统命令行方式保持一致。 增加后台运行功能。即用户可以使用”&”作为一个命令结束,以启动下一个命令。 增加I/O重定向功能。即用户可以...
$0:获取当前执行的Shell脚本的文件名,如脚本中包含路径,则输出也包括路径 $n:获取当前执行的Shell脚本的第n个参数值,如n>9,则需要使用用大括号,如${10},各参数间用空格进行分隔 $#:获取当前执行的Shell脚本...
python-unix-shell 外壳特点: 上下箭头可用于浏览命令历史记录 选项卡可用于自动完成文件名 支持重定向,并且管道在命令之间使用空格进行重定向和管道示例1: 有效语法=> ls | 厕所使用有效语法=> ls | wc 示例2:...
如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。Grep可用于shell脚本,因为Grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不...
Bash命令:Slugify Slugify是一个bash命令,它将文件名和目录转换为Web友好格式。... -a:删除紧邻破折号的空格-c:将连续空格合并为单个空格-d:用破折号替换空格(而不是默认下划线)-h:帮助-i :忽略大小写-n:干燥
如果模板包括空格,则必须被引用,模板后的所有字符串被 看作文件名。搜索的结果被送到标准输出,不影响原文件内容。 3. grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则...
此类别中的各个模式仅在处理多行输入方面有所不同。 可以通过文件名参数或通过stdin提供输入。 选项-i提供就地更新。 请参阅下面的示例,在下面进一步获取简洁的信息,或阅读手册。 例子 音译示例 # Converts a...