如何将dos2unix递归应用于文件夹的所有内容?


11

有没有一种方法可以应用该dos2unix命令,使其针对文件夹及其子文件夹中的所有文件运行? man dos2unix没有显示任何-r或类似的选项可以使操作简单明了?

Answers:



3

跳过二进制文件和隐藏文件对我很重要:

这对我来说效果很好:

find . -type f -not -path '*/\.*' -exec grep -Il '.' {} \; | xargs -d '\n' -L 1 dos2unix -k

转换为:在当前目录中递归查找所有非隐藏文件,然后使用grep,列出所有非二进制(-I)非空文件,然后一次将其通过管道传送到xargs(由换行符分隔)中的一个文件至dos2unix并保留原始时间戳。

也可以看看:

https://github.com/mdolidon/endlines


2

您可以使用find查找要通过dos2unix命令运行的目录结构中的所有文件。

find /path/to/the/files -type f -exec dos2unix {} \;

看一下查找手册页,有很多选项可用于指定要评估的内容


这没用。
Alex Kinman

2
如果在文件树下的任何地方都有.git目录,请非常小心地运行它……它损坏了我的本地git存储库。
Aaron_H

1

使用通配符。像这样:(如果您在文件夹中)

dos2unix *

或者如果您不在文件夹中,请执行以下操作:

dos2unix /path/to/folder/*

1

使用bash

shopt -s globstar
dos2unix **

中的globstarshell选项bash允许使用**glob。这个作品就像*但是比赛横跨/在路径中(因此匹配子目录的名称也是如此)。这将在其子目录中包含少量文件的目录中工作(不超过数千个)。

zshyash外壳程序(带有set -o extended-globin yash)中,您将

dos2unix **/*
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.