2-3 tệp mỗi giây được thử nghiệm với tôi file
dường như rất chậm. file
thực sự thực hiện một số thử nghiệm khác nhau để thử và xác định loại tệp. Vì bạn đang tìm kiếm một loại tệp cụ thể (sqlite) và bạn không quan tâm đến việc xác định tất cả các loại khác, bạn có thể thử nghiệm trên một tệp sqlite đã biết để xác định thử nghiệm nào thực sự xác định nó. Sau đó, bạn có thể loại trừ những người khác bằng cách sử dụng -e
cờ và chạy với tập tin đầy đủ của bạn. Xem trang người đàn ông :
-e, --exclude testname
Exclude the test named in testname from the list of tests made to
determine the file type. Valid test names are:
apptype
EMX application type (only on EMX).
text
Various types of text files (this test will try to guess the
text encoding, irrespective of the setting of the ‘encoding’
option).
encoding
Different text encodings for soft magic tests.
tokens
Looks for known tokens inside text files.
cdf
Prints details of Compound Document Files.
compress
Checks for, and looks inside, compressed files.
elf
Prints ELF file details.
soft
Consults magic files.
tar
Examines tar files.
Chỉnh sửa: Tôi đã thử một số bài kiểm tra bản thân mình. Tóm lược:
- Áp dụng lời khuyên của tôi với các cờ phù hợp có thể tăng tốc
file
khoảng 15%, cho các thử nghiệm để xác định sqlite. Đó là một cái gì đó, nhưng không phải là sự cải thiện lớn mà tôi mong đợi.
- Kiểm tra tập tin của bạn là rất chậm. Tôi đã làm 500 trên một máy tiêu chuẩn trong thời gian bạn làm 2-3. Bạn có đang sử dụng phần cứng chậm hoặc kiểm tra các tệp khổng lồ, chạy phiên bản cổ
file
hoặc ...?
- Bạn phải giữ bài kiểm tra 'mềm' để xác định thành công một tệp là sqlite.
Đối với tệp DB sqlite 16 MB, tôi đã làm:
#!/bin/bash
for i in {1..1000}
do
file sqllite_file.db | tail > out
done
Thời gian trên dòng lệnh:
~/tmp$ time ./test_file_times.sh; cat out
real 0m2.424s
user 0m0.040s
sys 0m0.288s
sqllite_file.db: SQLite 3.x database
Thử các loại thử nghiệm khác nhau loại trừ và giả sử xác định được thực hiện dựa trên một thử nghiệm duy nhất, đó là thử nghiệm 'mềm' (tức là tra cứu tệp ma thuật) xác định tệp. Theo đó, tôi đã sửa đổi file
lệnh để loại trừ tất cả các thử nghiệm khác:
file -e apptype -e ascii -e encoding -e tokens -e cdf -e compress -e elf -e tar sqllite_file.db | tail > out
Chạy 1000 lần này:
~/tmp$ time ./test_file_times.sh; cat out
real 0m2.119s
user 0m0.060s
sys 0m0.280s
sqllite_file.db: SQLite 3.x database
file
chạy trên 2115 tệp mà không có tùy chọn đặc biệt nào0m0.117s user 0m0.078s sys 0m0.044s
dành cho tôi