批量修改到linux文件格式

[复制链接]
查看536 | 回复3 | 2023-11-27 11:29:55 | 显示全部楼层 |阅读模式

Linux xargs命令解析及递归执行dos2unix命令

我们在把windows的文件拷贝到linux系统下是,有时候会出现无法使用的情况,这可能就是文件格式被修改了,那么我们就需要转成linux格式才能用,这里介绍一个工具 dos2unix,可以通过指令批量改写文件格式,下面的介绍这条指令的作用:

不想看的同学,可以直接使用最底部的命令

一、xargs命令的作用

xargs命令的作用,是将标准输入转为命令行参数。

echo "hello world" | xargs echo
hello world

上面的代码将管道左侧的标准输入,转为命令行参数 hello world,传给第二个 echo命令。

xargs命令的格式如下。

xargs [-options] [command]

真正执行的命令,紧跟在 xargs后面,接受xargs传来的参数。

xargs的作用在于,大多数命令(比如rm、mkdir、ls)与管道一起使用时,都需要xargs将标准输入转为命令行参数。

echo "one two three" | xargs mkdir

上面的代码等同于 mkdir one two three。如果不加xargs就会报错,提示mkdir缺少操作参数。

二、-0 参数与 find 命令

由于 xargs默认将空格作为分隔符,所以不太适合处理文件名,因为文件名可能包含空格。

find命令有一个特别的参数 -print0,指定输出的文件列表以 null分隔。然后,xargs命令的 -0参数表示用 null当作分隔符。

find /path -type f -print0 | xargs -0 rm

上面命令删除/path路径下的所有文件。由于分隔符是 null,所以处理包含空格的文件名,也不会报错。

还有一个原因,使得 xargs特别适合 find命令。有些命令(比如rm)一旦参数过多会报错"参数列表过长",而无法执行,改用xargs就没有这个问题,因为它对每个参数执行一次命令。

find . -name "*.txt" | xargs grep "abc"

上面命令找出所有TXT文件以后,对每个文件搜索一次是否包含字符串abc。

三、递归执行dos2unix命令

安装使用

sudo apt install dos2unix

查找出所有文件,并使用 null分隔文件名,同时对每个文件都执行 dos2unix命令

$ find . -type f -print0 | xargs -0 dos2unix
回复

使用道具 举报

qwe2079282957 | 2023-11-27 11:34:56 | 显示全部楼层
这个装个360zip,直接解压
回复 支持 反对

使用道具 举报

lsrly | 2023-11-27 14:27:04 | 显示全部楼层
666
回复

使用道具 举报

干簧管 | 2023-11-27 19:17:29 | 显示全部楼层
学习
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则