当前位置:  操作系统/服务器>linux

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

    来源: 互联网  发布时间:2014-10-16

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

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

看下面的脚本,我们可以了解的更清楚:

执行的结果如下:

实际上,当前目录的文件只有两个:

对于简单的文件名,如上例中,我们也可以通过 for i in *doc 这样简单的方法来获得文件列表。但是对于复杂的环境,如下图,我们如何获得这些列表呢?

有一个办法,通过 for i in "* *" 可以获得文件名的列表,但是一个很糟糕的列表,因为这个结果是一个两个文件名在一起的列表,我们完全无法拿来做后续的操作,如下图所示

通过 "* *" 这样的技巧可以避免上面所说的问题,但是在应用mv或其他操作时,还是会出现问题。

上面的问题,可以通过将变量放入引号中("$i")解决,通常情况下,引号中的空格可以被正确的处理。但这并不是一个恒久的解决办法,因为我们无法处理管道、子Shell等复杂的情况。

一个终极的解决办法就是设置IFS(the Internal Field Separator),不要用空格做为IFS,选择其他的符号。先来看看man page:

IFS: The Internal Field Separator that is used for word splitting after expansion and to split lines into words with the read built-in command. The default value is “”.

另外一个办法就是在对文件名进行处理之前,先将空格替换为特殊的自定义符号,然后在处理结束的时候,再替换回来

safename="$(echo name | sed 's/ /_-_/g')"

original="$(echo $safename | sed s'/_-_/ /g')"

其他还有一些方法,例如利用find命令。


    
 
 

您可能感兴趣的文章:

  • 问一个关于在shell中调用内置命令时参数的问题?参数从空格处被断开
  • shell 参数数目不固定如何遍历(主要原因是包含带空格的参数)
  • linux系统在shell中用while读取文件分隔符tab键转空格???
  • shell script 读文件赋值 遇到空格被分节
  • shell trim 去掉字符串两边的空格,不去掉中间的 怎么做?
  • Shell中处理包含空格的文件名实例
  • shell 按当前时间作为文件名建立文件夹
  • 我想写一个shell脚本 把当前文件夹下的所有文件名改名
  • 如何删除目录中文件名小于某个字符串的所有文件 shell
  • [求助]一个shell查询文件名的问题
  • 怎么用shell创建连续文件名的文件??
  • Shell获取文件的文件名和扩展名的例子
  • shell,如何遍历出指定位置包含指定字符串的文件名?
  • 如何写shell脚本 把文件移到文件名对应的文件夹
  • 怎么用shell把文件名中一些字符去掉
  • 在shell下,如何获得一个目录下的文件名?
  • 在C SHELL中,如何判断在某一指定目录下是否有已知文件名存在?
  • shell 获取解压后的文件名
  • 求一个批量改文件名的shell,谢谢。
  • 如何用shell获取linux目录下的文件名呢?
  • 求助 shell中split命令如何实现文件分割 并统计分割文件个数。分割完之后,命名方式从 文件名.001 开始
  • 如何用shell脚本实现根据当前文件名生成新文件
  • SHELL脚本修改文件名移动到指定文件夹
  • Linux shell script输出文件名
  • shell创建一个带参数的文件名,这个参数怎么不显示出来backup$BDATE.dump
  • 新手请问,检查某个指定文件是否存在于opt目录下,如果存在则把该文件名保存到文本文件里,用Shell脚本如何写?请简写代码供参,谢谢。PM5
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 在LINUX下做文本处理的工作,一般是用SHELL脚本还是动态语言方便?
  • 请教:shell遍历文件夹,处理其中的文件。
  • [100分]如何在GTK下编写的程序中调用shell下的批处理程序[高手进]
  • 怎样用SHELL按行读取文件并处理?
  • Shell处理数据的唯一性问题
  • SHELL编程和后台批处理
  • LINUX SHELL 正则处理汉字 问题
  • shell脚本日期处理
  • 关于shell编程的文本处理
  • shell编程:我这样处理上G的大文件,会不会有问题?
  • 编程技术其它 iis7站长之家
  • 用来批处理的shell script怎么写?
  • shell中处理字符
  • 一个shell的下的批处理的问题
  • 编写shell脚本执行远端windows的批处理
  • 关于shell的脚本问题.(字符串处理)
  • SHELL行处理:替换行中某域
  • 请教一个shell处理文件或字符串的问题
  • Linux Shell Script 字符串处理
  • shell处理数据:如何将列转换成行
  • Centos6下安装Shell下文件上传下载rz,sz命令
  • 不同类型的shell*(K SHELL , C SHELL) 用命令怎么切换?
  • linux bash shell命令:grep文本搜索工具简介
  • 我在执行shell时,想在shell里直接向mysql数据库插入数据,我该如何写shell。
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • 菜鸟问问题:shell是什么呢?普通的ls、cp、pwd这些命令算不算shell呢?如何把自己写的文件变成shell呢?
  • linux bash shell命令:文本搜索工具grep中用于egrep和 grep -E的元字符扩展集
  • 傻瓜问题,请问shell编程和shell脚本编程的关系
  • linux bash shell命令:文本搜索工具Grep命令选项及实例
  • shell变量和子shell的问题请教
  • linux bash shell命令:文本搜索工具grep正则表达式元字符集(基本集)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3