如何在Linux中使用shell命令檢查大文件是否僅包含零字節('\0'
)?我可以爲此編寫一個小程序,但這似乎是一個矯枉過正的問題。如何檢查文件是否僅包含Linux shell中的零?
回答
如果你正在使用bash,你可以使用read -n 1
提前退出,如果非NUL
字符已經發現:
<your_file tr -d '\0' | read -n 1 || echo "All zeroes."
,你代替實際的文件名your_file
。
值得注意的是'file'是文件名,而不是命令'file'。 –
I' d add:對於像我這樣的人,他們不知道所有的bash語法,也不喜歡「神祕的」符號(這當然是主觀的),這相當於: 'cat you_file | tr -d'\ 0'|閱讀-n 1 ||回聲「全零」 – brunetton
如果你有猛砸,
cmp file <(tr -dc '\000' <file)
如果你沒有猛砸,下面應該是POSIX(但我猜有可能是cmp
傳統的版本是不舒服的閱讀標準輸入):
tr -dc '\000' <file | cmp - file
也許更經濟,假設你grep
可以讀取任意的二進制數據,
tr -d '\000' <file | grep -q -m 1^|| echo All zeros
我想你甚至可以用dd
管道調整最後一個例子,以便在一個數據塊(如果有很長的序列沒有換行符)或甚至下降到一個字節後截斷tr
的任何輸出。或者,也許只是迫使那裏有新行。
tr -d '\000' <file | tr -c '\000' '\n' | grep -q -m 1^|| echo All zeros
它不會贏得優雅獎,但:
xxd -p file | grep -qEv '^(00)*$'
xxd -p
打印文件以下列方式:
23696e636c756465203c6572726e6f2e683e0a23696e636c756465203c73
7464696f2e683e0a23696e636c756465203c7374646c69622e683e0a2369
6e636c756465203c737472696e672e683e0a0a766f696420757361676528
63686172202a70726f676e616d65290a7b0a09667072696e746628737464
6572722c202255736167653a202573203c
所以我們grep命令來查看是否有一條線,並不是完全在0以外,這意味着在文件中有一個與'\ 0'不同的字符。如果不是,則文件完全由零字符組成。
(其中一個發生的返回碼信號,我以爲你想它的腳本如果不是,請告訴我,我會寫別的東西。)
編輯:添加-E用於分組和-q到丟棄輸出。
「文件」 /dev/zero
返回上讀取零個字節序列,所以cmp file /dev/zero
基本上應該給你想要的東西(報告剛剛超越的file
長度第一不同的字節)。
- 1. linux檢查文件是否包含在文件
- 2. 如何檢查文件夾是否僅包含使用php的文件
- 3. 如何檢查功能是否僅包含在子文件夾的頁面中
- 4. 如何檢查句子是否僅包含文件中的單詞
- 5. 如何檢查數組以查看它是否包含零值?
- 6. 如何在Linux Shell腳本文件中包含文件?
- 7. 如何檢查矩陣是否包含零列?
- 8. 如何在golang中檢查文件是否包含字符串?
- 9. 如何檢查文件是否包含純文本?
- 10. 如何檢查ListView是否包含指定的頭文件?
- 11. 如何檢查包含文件的目錄是否存在?
- 12. 如何檢查NSString是否包含'%'?
- 13. 如何檢查HashSet是否包含值?
- 14. 如何檢查url是否包含「main.php」
- 15. NAnt:檢查包含文件是否已包含
- 16. 如何檢查DataTable是否包含DataRow?
- 17. 如何檢查CGContext是否包含點?
- 18. 如何檢查一個php文件是否被成功包含?
- 19. 如何檢查一個txt文件是否包含一個詞
- 20. 如何檢查文件是否包含字符串(使用Nant)?
- 21. 如何檢查文件是否已包含在內?
- 22. 如何檢查csv文件是否包含字符串?
- 23. Linux/bin/sh檢查字符串是否包含X
- 24. 檢查某些文本是否僅包含某些模式
- 25. 如何檢查(在運行時)用戶是否包含文件
- 26. python。如何查找文本是否包含零。?
- 27. 如何檢查HDFS文件是否包含二進制數據?
- 28. 如何檢查文件是否包含「。」 (點)運算符
- 29. 如何檢查是否包含jQuery UI文件?
- 30. VB.Net驗證:檢查文本是否僅包含字母
它可以包含換行符嗎? – CodeBlue
@CodeBlue不,只有零字節。 – vitaut