2016-12-29 49 views
0

如何使用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代碼我可以編譯爲目標系統的二進制文件也可以。

+0

你可以使用類似'grep -c「\ r」$ i'的東西嗎? –

+0

我想建議類似Walther的東西:'grep -l $'\ r'*'列出在'grep -L $'\ r'*'列出Unix文件時提交的Dos。 –

+0

'-c'建議在同一個文件的dos和unix版本上返回'90'。 – lissachen

回答

2

試試這個:

grep -q `echo -e '\015'` $i && echo DOS 

echo命令會產生CR-LF對,然後將grep的搜尋這些完全相符的字符,在DOS下的文本文件找到他們。我用busybox echo和grep測試過它,它工作。有可能編譯不同功能的不同版本的busybox可能無法正常工作。

具有混合行結束符的文件將被檢測爲DOS。如果要確定是否有多少個DOS結尾與它具有多少個UNIX結尾,則可以使用-c來獲得CR-LF對的計數,然後與總計行數wc -l進行比較。

如果你有二進制文件,你必須確定文件是文本還是二進制文件。

相關問題