linux - stat "$somepath"--format '%F' 可以返回哪些可能的值

标签 linux file-type

通过反复试验,我发现 stat "$somepath"--format '%F' 可以返回以下值:

  1. 常规文件

  2. 目录

  3. 符号链接(symbolic link)

我希望使用 stat 执行递归目录内容操作,并且希望确保我能够正确识别每种可能的文件类型。硬链接(hard link)的行为似乎与我假设的一样,并且 stat 返回目标类型。

此信息不会出现在我的 man 页面中;它只说:%F 文件类型

(它警告 stat 可能会因 shell 不同而有所不同;如果这种特定用法是可移植的,那就太好了,但我主要关注 bash)

此列表是否完整,并且 stat 是否允许根据执行环境或版本更改在这种情况下生成的文本?

注意:我对 Linux、文件系统或命令不了解,所以我可能错过了一些明显的东西

最佳答案

注意:stat 的输出是基于约定的,不同版本的 stat(来自不同作者和历史使用情况)以及同一 stat 的不同版本可以并且确实返回不同的输出。

我记得在处理文件(YMMV)时实际看到的文件类型是:

  • 常规.* 文件(常规空文件是一个经常被忽视的有趣区别)
  • 目录
  • 符号链接(symbolic link)
  • 先进先出
  • .* 特殊文件
  • socket
  • 信号量
  • 端口
  • .* 内存对象

一般来说,如果您关心文件是什么,那么最好使用您选择的编程语言中的文件处理库,该语言已经经过一些开发才能准确识别文件;使用命令行和脚本并不是一种非常可靠的做事方式

如果您想深入了解,这里有一些主要指向 stat 的 gnu 实现的链接:

GNU Findutils documentation

Old GNU Findutils documentation

Common file types

The man page is fairly uninformative as you suggest

GNU stat related source code

GNU file type related source code

关于linux - stat "$somepath"--format '%F' 可以返回哪些可能的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42689540/

相关文章:

c - 如何告诉 gcc 停止使用内置函数?

linux - ubuntu 14.04.1 服务器空闲负载平均 1.00

javascript - 检查 node.js 中的实际文件类型

vim - "vim:filetype"在 vscode 中等效

Grails文件上传-如何识别文件和/或内容类型?

c++ - 某些相关文件类型(.zip、.rar、...)的文件删除机制

linux - 将包含路径值添加到 .htaccess 会导致内部服务器错误

linux - 将 tee 与 bash 结合使用会导致某些脚本挂起

将绝对路径转换为当前存在的相对路径的 Linux 命令

java - 在 JFileChooser 中强制执行文件过滤器