【发布时间】:2017-01-27 15:10:33
【问题描述】:
我正在尝试编写脚本更改没有 DOS 行结尾的文件以将它们更改为具有 DOS 行结尾,但我对如何定位不包含 DOS 行结尾的文件感到困惑。
我有以下适用于 linux 的命令
$ find -type f -exec file {} \; | grep -v CRLF
它工作并返回
./test/test.bat: ASCII text
但是,在 OSX 上我得到了
$ find -type f -exec file {} \; | grep -v CRLF
find: illegal option -- t
usage: find [-H | -L | -P] [-EXdsx] [-f path] path ... [expression]
find [-H | -L | -P] [-EXdsx] -f path [path ...] [expression]
我也试过了
$ find . -type f -exec file {} \; | grep -v CRLF
cannot open `' (No such file or directory)
cannot open `' (No such file or directory)
cannot open `' (No such file or directory)
cannot open `' (No such file or directory)
... etc
在 OSX 上是否应该使用不同的语法来完成此操作?
【问题讨论】:
-
OSX 是基于 bsd 的,并且没有太多 GNU 的东西。 osx find 不是 gnu find,并且有不同的命令行选项。
-
这里唯一明显的非POSIX主义是省略
path并使用.作为默认值。 -
我认为这与当前目录中的文件有关,而不是与实际命令有关。错误消息来自
file,好像{}被""替换。 -
@chepner,同意。该特定顺序似乎不太可能,但文件名中的其他不可打印字符(或后跟退格键 &c. 以 render 为空的字符)是合理的。虽然他们为什么会导致那个特定的错误有点令人惊讶——也许如果他们的符号链接坏了?我需要看看 OS X 的
find是如何处理这种情况的。