有人知道linux下file命令是如何判断一个文件是属于什么类型的吗?

CoolQ 2002-06-02 03:58:20
好像不像windows下只看扩展名,好像有别的方法。
...全文
457 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kuye2002yx 2002-06-07
  • 打赏
  • 举报
回复
BeOS 下也怪,一个本来一个 MP3 文件在 windows 下改成了 .jpg,再回到 BeOS 下,图标没有双击前是 jpg 文件的图标,双击后没有使用看图软件打开,而是启动了 soundplay 播放,同时图标变成了 mp3 的图标。

我想还是可能是文件的头几个字节或者位记录了文件的类型。像 zip 文件以 PK 打头(当然以 PK 打头的不全是 zip 文件,普通纯文本也可),就连 普通的 exe 也有 DOS 头 PE 头之类的头信息。
hzhr 2002-06-06
  • 打赏
  • 举报
回复
有什么好讨论的,把源代码找来一看不久清楚了吗?
我记得它好象会检查一个magic文件,这个magic文件包含了常见文件格式的一些信息,file通过用它来对比,再判断文件的类型(呵呵,我也没看过源代码,只是凭记忆瞎说)
CoolQ 2002-06-03
  • 打赏
  • 举报
回复
我也不太清楚,希望大家讨论讨论。
zhenshi 2002-06-02
  • 打赏
  • 举报
回复
比如可以以这个判断是否是可执行文件。
http://www.csdn.net/expert/topic/741/741968.xml?temp=.6701776
yixudong 2002-06-02
  • 打赏
  • 举报
回复
依CoolQ()你的理解,应该是怎样的呢》
CoolQ 2002-06-02
  • 打赏
  • 举报
回复
如果是察看文件头,那么描述文件的描述性语言一定也是事先写好的啦?如果是这样的话,有的文件是ascii file,这怎么能从文件头里看出来?
hzhr 2002-06-02
  • 打赏
  • 举报
回复
magic
Kuye2002yx 2002-06-02
  • 打赏
  • 举报
回复
文件头,用 UltraEdit 打开不同文件你就知道每种文件类型开头的不同了
yixudong 2002-06-02
  • 打赏
  • 举报
回复
你可以去查一下它的原代码,看看是怎么实现的。
yixudong 2002-06-02
  • 打赏
  • 举报
回复
这就不太清楚了。抱歉。
CoolQ 2002-06-02
  • 打赏
  • 举报
回复
我不是指的这个意思,比如说
file abc.tar.gz系统会提示你这是一个gzip文件,而且即使把abc.tar.gz换名为abc结果还是一样。
yixudong 2002-06-02
  • 打赏
  • 举报
回复
看文件的stat结构吧。

文件类型记录在stat结构的st_mode域里

用下面的宏来决定文件的类型:
S_ISREG() 正规文件
S_ISDIR() 目录文件
S_ISCHR() 字符设备文件
S_ISBLK() 块设备文件
S_ISFIFO() 有名管道
S_ISLNK() 符号连接文件
S_ISSOCK() 套接字文件


用lstat()系统调用可以的到文件的stat结构。
yixudong 2002-06-02
  • 打赏
  • 举报
回复
看文件的stat结构吧。

文件类型记录在stat结构的st_mode域里

用下面的宏来决定文件的类型:
S_ISREG() 正规文件
S_ISDIR() 目录文件
S_ISCHR() 字符设备文件
S_ISBLK() 块设备文件
S_ISFIFO() 有名管道
S_ISLNK() 符号连接文件
S_ISSOCK() 套接字文件


用lstat()系统调用可以的到文件的stat结构。

19,612

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧