我知道如何通过使用dos2unix
将文件格式从dos更改为unix,但是如何将所有文件更改为目录树下。 dos2unix
可以递归地更改文件吗?如何将某些文件从dos格式转换为unix
例如,我有一个像下面的一些文件:
TOPDIR
|
+-----dir1
| |
| +---file1,file2, file3
|
+-----dir2
|
+---file4,file5
我怎样才能改变他们在同一时间,或使用一些shell脚本?
我知道如何通过使用dos2unix
将文件格式从dos更改为unix,但是如何将所有文件更改为目录树下。 dos2unix
可以递归地更改文件吗?如何将某些文件从dos格式转换为unix
例如,我有一个像下面的一些文件:
TOPDIR
|
+-----dir1
| |
| +---file1,file2, file3
|
+-----dir2
|
+---file4,file5
我怎样才能改变他们在同一时间,或使用一些shell脚本?
最好是用来做find /path -type -f -exec dos2unix '{}' \;
+1。我从* .c模式的示例中复制粘贴,但对于所有文件,-type f更好。 :-) – 2013-02-21 06:51:05
@Andrey Dmitriev,'find/path -type -f -exec dos2unix'{}'和'find/path -type f -exec dos2unix {} +' – 2013-02-21 07:00:59
语法产生的作业更少;用分号表示它是每个文件的一个新进程。 – tripleee 2013-02-21 07:03:42
find /path -name '*' -type f -exec dos2unix {} \;
为什么要添加'-name'*''? – filmor 2013-02-21 06:45:34
如果你只需要将'dos2unix'应用于某些文件,让示例更易于理解,imo(例如,你可以编写'-name'* .c'') – Unknown 2013-02-21 07:21:39
......也许这个答案背后的思想是'-name'*''会排除点文件('。*')?那么,无论如何,它不会(在某些情况下它已经习惯了,但现在它不会 - 所以不要假设它会)。例如,'.foo'文件或'.git'目录中的文件将被处理。这些文件必须被排除,例如'find path \(-name“。*”-prune \)-o \(-type f -print \)'(注意:你不能用find来启动它。 (等)'否则它会排除一切) – michael 2013-02-21 07:22:51
dos2unix -k `find . -type f`
find . -type f -exec dos2unix -k '{}' \;
find . -type f -print | xargs dos2unix -k
上述任何命令都可以从TOPDIR
你应该开始玩弄UNIX命令。没有其他方法可以学习如何使用他们提供的力量。你必须尝试自己,逐步探索和征服那个环境。这样做,这是值得的。 – arkascha 2013-02-21 06:32:38
@arkascha,谢谢你的建议 – 2013-02-21 06:56:19
对此,阅读manpage或'$ CMD --help'总是有帮助的,因为一些程序(例如'grep')有一个递归标志'-R'来为你做这件事。另外,如果文件数量不是太高(即几百个),你可以使用像'zsh'这样的shell的扩展glob功能来执行'dos2unix **/*'。 – filmor 2013-02-21 08:12:03