原文网址:http://kuaile.in/archives/1208

dos2unix是Linux下的一个用户转换格式的程序,由于windows上文件的结束符和linux上的不同,那么在windows上编写的文件或者是脚本在Linux上就会遇到类似于下面的错误:

1
/bin/sh^M: bad interpreter: No such file or directory

出现上述的错误真实因为结束符的不同,要解决上述问题,只需要转换一下就行了

方法一:针对于单个文件或少量文件:

使用vi 编辑sh脚本或者其他的脚本文件,然后按ESC进入vi的命令行模式,输入下面的命令:

1
set fileformat=unix

当然如果要将文件格式设定为dos文件格式,也就是windows的格式,那么输入下面的命令就行了

1
set fileformat=dos

修改完成后,使用下面的命令查看文件的格式类型:

1
set ff

缺点:只适合少量文件,当文件数较多时,工作量巨大

方法二:批量更改linux文件格式

和方法一类似的,Linux本身提供了dos2unix和unix2dos这两个命令来实现windows和linux文件的转换,

但是。dos2unix和unix2dos本身没有提供递归也就是批量修改的方式,这样一来我们就需要借助于xargs命令了

xargs的命令的作用就是将参数列表转换成小块分段传递给其他命令,借助于xargs,我们可以很简单的实现批量替换;

这里假设我需要替换的文件所在目录为 /home/test目录下,要更改文件格式的后缀为.py ,那么借助于下面的命令就可以轻松的实现批量替换格式:

批量替换为linux文件格式:

1
sudo find /home/test -name "*.py" | xargs dos2unix

批量替换为dos文件格式:

1
sudo find /home/test -name "*.py" | xargs unix2dos

优点:批量替换,工作量小, 总的来说,方法二借助于 管道符和xargs来实现的批量命令,将方法二修改一下就可以实现很多的批量操作,

比如:

1.批量删除整个linux系统中后缀为.tmp的文件;那么命令可以这么写:

1
sudo find /home/test -name "*.tmp" | xargs rm -f

2.删除整个linux系统中与apache相关的文件:

1
sudo find /home/test -name "*apache" | xargs rm -rf

只要理解了xargs的功能。你会发现xargs的方便与快捷之处,这里我也是抛砖引玉罢了

最新文章

  1. GL.IssuePluginEvent 发布插件事件
  2. Linux 进程间通讯详解四
  3. Caused by: org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags
  4. iptables使用multiport 添加多个不连续端口 不指定
  5. [topcoder]BadNeighbors
  6. 16_会话技术_Session案例
  7. [DP] LGTB 玩THD (复杂状态DP)
  8. iOS开发UI篇—Quartz2D简单使用(一)
  9. iOS开发常识
  10. css居中问题
  11. HTML Input属性
  12. sqlserver游标使用和循环
  13. 从零开始搭建Vue组件库——VV-UI
  14. 几个常用的vscode插件
  15. 【php增删改查实例】第二十六节 - 个人详情页制作
  16. java Timer 定时每天凌晨0点执行任务
  17. 税控服务器 TC5002UpdatePackage 安装更新
  18. 用ImageSwitcher实现显示图片(更改图片时有动画效果)
  19. MySQL auto_increment初始值设置
  20. MATLAB2012a_for_win7_64

热门文章

  1. VS2010每次编译都重新编译整个工程的解决方案
  2. 用Hexo搭建属于自己的Blog
  3. POJ 3865 - Database 字符串hash
  4. linux的colrm命令
  5. Jquery.Sorttable 桌面拖拽自定义
  6. spring 配置触发器 (类似于定时任务)
  7. 武汉科技大学ACM :1003: 零起点学算法14——三位数反转
  8. HAOI 硬币购物
  9. jquery mobile 复选框和单选框
  10. ECSTORE 关于前台页面DIALOG的调用