我们都知道(或有一天会知道),Ubuntu(或一般的 GNU/Linux)并不使用文件扩展名来识别文件类型。而是使用神奇数字。
A神奇数字是与每个 Linux 文件相关联的数字,通常是文件的前几个字节,用于标识文件类型。它由 Linux 命令行实用程序使用文件显示与文件相关的信息。
因此,当我们使用命令检查文件类型时file
,它会给出适当的文件类型,而不管其扩展名是什么。
因此 mp3 文件
aditya@aditya-desktop:~/Music$ file 'music.mp3'
music.mp3: Audio file with ID3 version 2.3.0, contains: MPEG ADTS, layer III, v1, 64 kbps, 44.1 kHz, JntStereo
aditya@aditya-desktop:~/Music$ file 'music'
music: Audio file with ID3 version 2.3.0, contains: MPEG ADTS, layer III, v1, 64 kbps, 44.1 kHz, JntStereo
aditya@aditya-desktop:~/Music$ file 'music.txt'
music.txt: Audio file with ID3 version 2.3.0, contains: MPEG ADTS, layer III, v1, 64 kbps, 44.1 kHz, JntStereo
aditya@aditya-desktop:~/Music$
相同的 expt,当尝试鹦鹉螺,当文件包含以下信息时,它会认为该文件是音乐文件:.mp3或者无延期,但当它被赋予。TXT扩展名,它会将其视为文本文件。
所以主要问题是,
- nautilus 使用扩展来识别文件吗?
- 我怎样才能强制 nautilus 忽略扩展并使用魔法数字?
答案1
正如您注意到的,是的,Nautilus 使用文件扩展名(如果存在)作为优先级来确定文件类型。
您可以编辑文件
/usr/share/mime/packages/freedesktop.org.xml
,搜索要忽略的扩展名并删除该行。以下是示例。
假设我不希望 Nautilus 关联“.txt”扩展名,而是希望它查看“神奇数字”。
一、编辑文件:
sudo gedit /usr/share/mime/packages/freedesktop.org.xml
我将查找以下行<glob pattern="*.txt"/>
并将其删除:
二、保存。
三、运行:
sudo update-mime-database /usr/share/mime
完毕!
== 效果 ==
mp3 文件如下所示:
如果我将扩展名改为 txt 的话,它看起来是这样的:
如果我编辑上述文件然后更改扩展名,它看起来会是这样的:
答案2
我猜问题在于某些文件(例如“txt”)很难通过魔法解决,因此总是需要一个 glob。
而像 mp3 这样的东西有一个定义的魔法序列。