2013-05-20 44 views
6

Tôi có thể xác định loại tệp bằng lệnh file. Tôi có thể nhận được phần mở rộng mặc định (ưa thích) cho tệp không?Tải tiện ích mở rộng tệp mặc định/ưa thích

Ví dụ cho

tmp_206.file: GIF image data, version 89a, 17 x 17 
tmp_202.file: ASCII text, with very long lines, with no line terminators 

nó sẽ là .gif.txt

Tôi biết phần mở rộng không quan trọng cho UNIX, nhưng họ quan trọng đối với tôi

+3

Có không có thứ gì như tiện ích mở rộng mặc định. Nhưng: máy chủ HTTP cố gắng ánh xạ các tiện ích mở rộng thành loại mime. Bạn có thể [tái sử dụng ánh xạ đó để chọn một phần mở rộng có khả năng] (http://stackoverflow.com/questions/7609208/complete-list-of-mime-type-file-extension-mapping). –

+2

Bạn có thể lấy loại mime bằng 'file --mime-type '. –

+0

@Banthar vâng, bạn đã đúng, tôi đã xóa nhận xét của mình sau khi tôi nhận ra điều đó :) – robertklep

Trả lời

0

Nếu bạn có một bộ hợp lý hạn chế các tiện ích mở rộng, việc tạo bản đồ từ đầu ra file tới tiện ích mở rộng ưa thích của bạn không khó.

case $(file - <"$file") in 
    '-: GIF image'*) ext=gif ;; 
    '-: ASCII text'*) ext=txt ;; 
    # etc 
esac 
2

Một số loại tệp hỗ trợ nhiều hơn 1 tiện ích mở rộng như jpe, jpeg, jpg, v.v ... đối với tệp jpeg.

gì bạn có thể làm là để có được loại mime đầu tiên sử dụng:

mimleType=$(awk -F';' 'NF>1{print $1}' < <(file -bi logo.jpeg)) 

Sau đó sử dụng awk này để có được phần mở rộng tập tin:

awk -v mt=$mimeType '$1==mt{print $2}' /Applications/MAMP/conf/apache/mime.types 

OUTPUT:

jpeg 
Các vấn đề liên quan