如何使用 busybox 版本的命令确定文本文件的行尾?
我的目标:列出目录中的文件以及它们是否具有 DOS 行结尾或 UNIX 行结尾。理想情况下,我想像这样在某种循环中执行此操作:
for i in *; do
**determineEndings** $i
done
或
find . -type f | **determineEndings**
不幸的是,因为我有命令的 busybox
版本,所以我没有可用的 file
命令来帮助我。我为我的目标系统找到了 file
的二进制文件,并将 magic
文件复制到 file --version
告诉我的位置,但仍然得到以下错误:
$ file -d myfile.txt
unknown, 0: Warning: using regular magic file `/usr/share/misc/magic'
file: could not find any valid magic files!
我可以为目标环境编译 C 代码,因此我可以为目标系统编译为二进制的简单 C 代码也可以工作。
最佳答案
试一试:
grep -q `echo -e '\015'` $i && echo DOS
echo 命令将生成一个 CR-LF 对,然后 grep 将搜索那些确切的字符,在 DOS 文本文件中找到它们。我已经用 busybox echo 和 grep 测试了这个并且它有效。编译了不同功能的不同版本的 busybox 可能无法正常工作。
具有混合行结尾的文件将被检测为 DOS。您可以使用 -c
来计算 CR-LF 对的数量,然后如果您想确定有多少 DOS 结尾与如何它有许多 UNIX 后缀。
如果您有二进制文件,则必须以其他方式确定该文件是文本文件还是二进制文件。
关于c - 如何确定嵌入式环境中的行尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41386184/