通过反复试验,我发现 stat "$somepath"--format '%F' 可以返回以下值
:
常规文件
目录
符号链接(symbolic link)
我希望使用 stat
执行递归目录内容操作,并且希望确保我能够正确识别每种可能的文件类型。硬链接(hard link)的行为似乎与我假设的一样,并且 stat
返回目标类型。
此信息不会出现在我的 man
页面中;它只说:%F 文件类型
(它警告 stat
可能会因 shell 不同而有所不同;如果这种特定用法是可移植的,那就太好了,但我主要关注 bash
)
此列表是否完整,并且 stat 是否允许根据执行环境或版本更改在这种情况下生成的文本?
注意:我对 Linux、文件系统或命令不了解,所以我可能错过了一些明显的东西
最佳答案
注意:stat 的输出是基于约定的,不同版本的 stat(来自不同作者和历史使用情况)以及同一 stat 的不同版本可以并且确实返回不同的输出。
我记得在处理文件(YMMV)时实际看到的文件类型是:
- 常规.* 文件(常规空文件是一个经常被忽视的有趣区别)
- 目录
- 符号链接(symbolic link)
- 先进先出
- .* 特殊文件
- socket
- 信号量
- 端口
- .* 内存对象
一般来说,如果您关心文件是什么,那么最好使用您选择的编程语言中的文件处理库,该语言已经经过一些开发才能准确识别文件;使用命令行和脚本并不是一种非常可靠的做事方式
如果您想深入了解,这里有一些主要指向 stat 的 gnu 实现的链接:
Old GNU Findutils documentation
关于linux - stat "$somepath"--format '%F' 可以返回哪些可能的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42689540/