1、问题:文件批量重命名和处理文件名中的空格

  • 如果文件名中有空格,在执行以下shell脚本的时候会出错。
  • shell 脚本
for filename in `ls`
do
echo $filename
done
  • 执行结果:会将带空格的文件名,以空格作为截分,分两次(多次)输出。

2、原因分析及对策

  • 原因:Shell 脚本中有个变量叫 IFS(Internal Field Seprator) ,内部域分隔符。默认是 space, tab, newline 来拆解读入的变量,然后对特殊字符进行处理,最后重新组合赋值给该变量。

  • 对策:只需要重置改变量,用完以后记得还原变量。

3、 示例代码

  • 例子1:写成一行
IFS_old=$IFS; IFS=$'\n';for name in `ls`; do mv $name LW_$name; done; IFS=$IFS_old;
  • 例子2:写成多行
IFS_old=$IFS
IFS=$'\n' for name in `ls`
do
mv $name LW_$name
done IFS=$IFS_old

最新文章

  1. YYModel 源码解读(二)之NSObject+YYModel.h (2)
  2. yum安装配置
  3. c++防止客户端多开巧妙代码
  4. TortoiseGit 连接oschina不用每次输入用户名和密码的方法
  5. extJs学习基础 容器的介绍
  6. JAVA作业02
  7. 移动端开发——javascript
  8. error LNK1281: 无法生成 SAFESEH 映像 LNK2026 模块对于 SAFESEH 映像是不安全的 VS2015 /win10
  9. Linux命令--用户用户组管理
  10. JavaSE复习日记 : 实例化对象/构造方法和this关键字
  11. lucene 索引查看工具
  12. C# 实现 Hyper-V 虚拟机 管理
  13. EF增删改查+使用Expression进行动态排序分页
  14. 简单类型对象 String
  15. STM32常见问题
  16. Cocos Creator JS 获取当前日期与时间
  17. SlidingMenu第二篇 --- SlidingMenu常用属性介绍
  18. xadmin的使用
  19. java框架篇---struts之文件上传和下载
  20. stringBuffer和stringBulider的区别

热门文章

  1. 【系列专题】JavaScript 重温系列(22篇全)
  2. 如何用Jmeter做接口测试
  3. NodeJS2-2环境&调试----引用系统内置模块,引用第三方模块
  4. return之为什么能够终止函数,代码演练
  5. Python面向对象-获取对象信息type()、isinstance()、dir()
  6. c++-面向对象类的示例-求周长面积,判断体积相等-文件操作和一般操作
  7. Nginx配置实例-反向代理实现浏览器请求Nginx跳转到服务器某页面
  8. CRM、ERP是什么?
  9. React搭建项目(全家桶)
  10. Xshell 连接 VirtualBox