【发布时间】:2012-09-29 15:31:21
【问题描述】:
我正在参加 UNIX 入门课程,并且有一个家庭作业问题如下:
上一题有多少个文件是文本文件?文本文件是包含人类可读内容的任何文件。 (技巧问题。在文件上运行 file 命令以查看该文件是文本文件还是二进制数据文件!如果您只是计算带有
.txt扩展名的文件的数量,您将不会得到此问题的分数。)
上一个问题只是问有多少常规文件,通过find . -type f | wc -l很容易弄清楚。
我只是无法确定“人类可读内容”是什么,因为我假设它意味着除了二进制/汇编之外的任何内容,但我认为这就是 -type f 显示的内容。也许这就是教授所说的“技巧问题”的意思?
这个问题稍后有一个跟进,它还询问“哪些文本文件包含大小写混合的字符串“csc”?”。显然“文本”不仅仅指.txt 文件,但我需要弄清楚第一个问题来确定这一点!
【问题讨论】:
-
不,
find -type f不包括目录、设备节点等(“特殊文件”),即纯文件以外的文件系统对象。它根本不检查文件的内容,只检查目录条目(inode)中的类型信息。 Unix 对“二进制”和“文本”文件没有任何区别(对于这个 Unix-head,任何定义这种区别的尝试都会进入滑坡)。
标签: bash file unix human-readable