1
A
回答
2
此perl腳本應該這樣做:
for f in *; do
perl -e '$/=undef;$_=<>;s|\0+$||;print;' < $f > $f_fixed
done
這將保留該文件中的所有完全無效,刪除任何最後,將結果保存到<original filename>_fixed
。
腳本說明:$/=undef
告訴perl對整個文件進行操作,而不是將其分割成行; $_=<>
加載文件; s|\0+||
刪除加載文件'string'結尾處的任何NUL字符串;和print
輸出結果。其餘的是標準的Bash文件重定向。
0
0
+1
這也刪除不在文件末尾的NUL字節。 – Reactormonk
+0
啊,好點,我認爲(錯誤地)這些是文本文件。 –
0
遵循@Eevee的建議,實際上可以避免截斷8M以下的文件。使用在循環以下條件和事實truncate
將承擔字節爲默認值,如果你不附加任何後綴的大小參數,這不會墊下面8M文件:
for file in $(ls -c1 directory); do
# ...
SIZE=$(stat -c%s $file)
LIMIT=$((8 * 1024 * 1024))
if [ "$SIZE" -lt "$LIMIT" ]; then
truncate -s $SIZE $file
else
truncate -s 8M $file
fi
# ...
done
0
算不上什麼針對這種特殊情況的Unix工具。下面是一個Python(3)腳本:
import sys
for fn in sys.argv[1:]:
with open(fn, 'rb') as f:
contents = f.read()
with open(fn, 'wb') as f:
f.write(contents.rstrip(b'\0'))
運行方式:
python retruncate.py file1 file2 files* etc...
相關問題
- 1. 將文件截斷爲字節大小
- 2. 按字節截斷字符串
- 3. 恢復其中前361個字節被截斷的GZIP文件
- 4. 如何從文件中截斷x個字節
- 5. 用Netty服務文件 - 響應被截斷一個字節
- 6. Erlang文件截斷
- 7. PDO OCI截斷大型多字節CLOB
- 8. NFC Android截斷APDU響應字節
- 9. 從字節中刪除NUL字符
- 10. 字符串包含NUL字節
- 11. 從文件名中截斷字符串
- 12. 打到寬字符後截斷文件
- 13. 截斷RTF文件中的關鍵字
- 14. python在數據中使用NUL字節的CSV文件的Dictread
- 15. AS3文本字段,截斷
- 16. ASP.Net treeview截斷節點文本
- 17. 截斷文本,忽略子節點javascript
- 18. JavaScript文件墜毀並轉化爲「」 NUL NUL NUL」記事本+
- 19. 截斷2字節變量爲1字節
- 20. 停止截斷Java文件?
- 21. ResXResourceWriter截斷文件結尾
- 22. 截斷vim撤銷文件
- 23. XmlDocument.WriteTo截斷結果文件
- 24. Javascript文件被截斷
- 25. 瞭解文件截斷
- 26. 截斷DBX核心文件?
- 27. C#截斷CSV文件#
- 28. HDFS和截斷文件
- 29. Joomla Mootools文件被截斷
你是指ASCII字符爲零('0')還是NUL字節?後者聽起來更像是從截斷(二進制)文件中得到的內容。 – Eevee
它是NUL字節。 – Reactormonk
文件是否有NUL個字節_ because_您使用了'truncate',它將較短的文件填充到所需的大小?也許真正的答案是不要在小於8M的文件上使用它:) – Eevee