Làm cách nào để xác minh xem tệp đó có phải là tệp nhị phân hoặc văn bản mà không cần mở tệp không?linux + xác minh xem tệp có phải là văn bản hoặc nhị phân
Trả lời
Không có cách nào chắc chắn mà không nhìn vào bên trong tệp. Hoewever, bạn không cần phải mở nó với một biên tập viên và xem cho chính mình để có một đầu mối. Bạn có thể muốn xem xét lệnh file
: http://linux.die.net/man/1/file
Con mèo của Schrödinger, tôi sợ.
Không có cách nào để xác định nội dung của tệp mà không cần mở tệp. Hệ thống tệp không lưu trữ siêu dữ liệu liên quan đến nội dung.
Nếu không mở tệp không phải là một yêu cầu khó, thì có một số giải pháp có sẵn cho bạn.
Edit:
Nó đã được đề xuất trong một số ý kiến và câu trả lời mà file(1)
là một cách tốt để xác định nội dung. Thật vậy. Tuy nhiên, file(1)
mở tệp đã bị cấm trong câu hỏi. Xem dòng áp chót trong ví dụ sau:
> echo 'This is not a pipe' > file.jpg && strace file file.jpg 2>&1 | grep file.jpg
execve("/usr/bin/file", ["file", "file.jpg"], [/* 56 vars */]) = 0
lstat64("file.jpg", {st_mode=S_IFREG|0644, st_size=19, ...}) = 0
stat64("file.jpg", {st_mode=S_IFREG|0644, st_size=19, ...}) = 0
open("file.jpg", O_RDONLY|O_LARGEFILE) = 3
write(1, "file.jpg: ASCII text\n", 21file.jpg: ASCII text
Nếu bạn đang cố gắng để làm điều này từ một tiện ích dòng lệnh thì lệnh file
sẽ mất một đoán vào những gì filetype nó được. Nếu đó là văn bản thì nó thường sẽ bao gồm văn bản từ trong mô tả của nó.
Tôi không biết về bất kỳ phương pháp xác định 100% nào nhưng lệnh tệp có lẽ là chính xác nhất.
Tất nhiên là mở tập tin và sẽ không chắc chắn 100%. –
Thật vậy, mặc dù tôi không chắc liệu anh ta có nghịch hay không khi mở tập tin hay có tiện ích mở nó. Tôi đã tuyên bố rằng không có phương pháp 100% nào đó để làm điều này. –
Trong unix, tệp chỉ là một số byte. Vì vậy, mà không cần mở tập tin, bạn không thể tìm ra 100% đó là ASCII hoặc nhị phân.
Bạn chỉ có thể sử dụng các công cụ có sẵn cho bạn và tìm hiểu sâu hơn để làm cho bằng chứng dễ dàng.
- tập tin
- mèo -v
Các cách chính xác để xác định loại của một file là sử dụng các tập tin (1) lệnh.
Bạn cũng cần lưu ý rằng các tệp được mã hóa UTF-8 là các tệp "văn bản", nhưng có thể chứa dữ liệu không phải ASCII. Các mã hóa khác cũng có vấn đề này. Trong trường hợp văn bản được mã hóa với một số code page, có thể không xác định rõ ràng liệu tệp có phải là văn bản hay không.
Các tập tin (1) lệnh sẽ nhìn vào cấu trúc của một tập tin để thử và xác định những gì nó chứa - từ tập tin (1) người đàn ông trang:
Các loại in thường sẽ chứa một trong những lời văn bản (file chỉ chứa ký tự in ấn và một vài ký tự điều khiển thông thường và là lẽ an toàn để đọc trên một ASCII terminal), thực thi (tập tin chứa kết quả của việc biên soạn một chương trình trong một hình thức hiểu đối với một số UNIX kernel này hay cách khác), hoặc dữ liệu nghĩa gì khác (dữ liệu thường là ‘nhị phân’ hay không thể in được).
đối với bảng mã ký tự khác nhau Với, các tập tin (1) người đàn ông đã cho biết:
Nếu một tập tin không phù hợp với bất kỳ mục trong tập tin kỳ diệu, nó là kiểm tra xem nó có phải là một tập tin văn bản hay không. ASCII, ISO-8859-x, non- Bộ ký tự ASCII được mở rộng ISO-bit (chẳng hạn như được sử dụng trên Macintosh và hệ thống PC của IBM), mã hóa UTF-8, mã hóa UTF-16 mã hóa và Bộ ký tự EBCDIC có thể được phân biệt bằng các phạm vi khác nhau: và chuỗi byte tạo thành văn bản có thể in trong mỗi bộ. Nếu một tệp vượt qua bất kỳ thử nghiệm nào trong số này, bộ ký tự của nó sẽ được báo cáo. ASCII, ISO-8859-x, UTF-8 và các tệp ASCII mở rộng được xác định là ‘văn bản’ vì chúng hầu như có thể đọc được trên hầu hết mọi thiết bị đầu cuối; UTF-16 và EBCDIC chỉ là 'dữ liệu ký tự' bởi vì, trong khi chúng chứa văn bản, văn bản là yêu cầu dịch trước khi có thể đọc được.
Vì vậy, một số văn bản sẽ được xác định là văn bản, nhưng một số có thể được xác định là dữ liệu nhân vật. Bạn sẽ cần phải tự xác định xem điều này có quan trọng với ứng dụng của mình hay không và thực hiện hành động thích hợp.
- 1. Kiểm tra xem tệp có phải là nhị phân hoặc ASCII với Node.js không?
- 2. Cách kiểm tra xem tệp có phải là ASCII hoặc nhị phân trong PHP
- 3. Xác định loại tệp nhị phân/văn bản trong Java?
- 4. IOS: xác minh xem chuỗi có phải là chuỗi rỗng
- 5. Cách kiểm tra xem tệp có phải là nhị phân không?
- 6. Làm cách nào để xác định tệp nhị phân và tệp văn bản bằng Python?
- 7. Cách xác minh xem tệp có phải là bảng tính excel hợp lệ không?
- 8. Ruby: Làm thế nào để xác định xem tập tin được đọc là nhị phân hay văn bản
- 9. Cách chạy tệp nhị phân trong Linux
- 10. Làm cách nào để phân biệt giữa các tệp 'nhị phân' và 'văn bản'?
- 11. tạo các tệp nhị phân ELF độc quyền trên Linux
- 12. Hãy nói với git rằng một tệp văn bản thực sự là nhị phân
- 13. Cách kiểm tra xem tệp có phải là tệp nhị phân và đọc tất cả các tệp không phải là tệp không?
- 14. Cách đọc tệp nhị phân trong c? (video, hình ảnh hoặc văn bản)
- 15. Kiểm tra xem địa chỉ email paypal có phải là người dùng đã xác minh không
- 16. Xác định xem tệp thực thi (hoặc thư viện) là 32 hoặc 64 bit
- 17. kiểm tra xem cây có phải là cây tìm kiếm nhị phân không
- 18. Cách xác minh xem một chuỗi trong Java có phải là URL hợp lệ không
- 19. Xác minh xem một chuỗi có phải là JSON trong python không?
- 20. Tệp văn bản hoặc tài nguyên cho văn bản không phải của người dùng
- 21. Trí thông minh nhân tạo, Phân loại văn bản
- 22. Xác minh màu văn bản trong iphone uiautomation
- 23. Phân tích tệp văn bản trong Java
- 24. cách tính toán sự khác nhau giữa hai tệp nhị phân (tức là hai tệp thực thi) trong linux
- 25. Cách tốt nhất để phân phối ứng dụng nhị phân cho Linux là gì?
- 26. Git hoặc Subversion cho các tệp nhị phân
- 27. Viết các tệp nhị phân bằng C++: có phải vấn đề địa phương mặc định không?
- 28. svn diff: tệp được đánh dấu là loại nhị phân
- 29. \ x00 có nghĩa là gì trong tệp nhị phân?
- 30. Git có tốt với các tệp nhị phân không?
Thật khó để biết đây là chương trình có liên quan hay liệu nó có nên được di chuyển sang SuperUser.com hay không (là một tiện ích hiện có được tìm sau?). – Johnsyweb
Văn bản tốt nhất là một tập con nhị phân, nếu không chỉ đơn thuần là một giải thích. Hãy xem xét tệp một byte chứa '0x65'. Bây giờ cho tôi biết hoàn toàn nếu đây là nhị phân hoặc văn bản. – MSalters
sao chép tệp trước khi xác minh. copy -> open -> verify -> xóa –