【发布时间】:2013-10-07 18:52:41
【问题描述】:
我有一个脚本将一些文件系统数据推送到另一个系统。
如果我能告诉自己每个文件实际上是什么“类型”文件,那将非常方便,因为这将有助于以后进行一些查询。
例如,假设我的脚本正在输出以下内容:
/home/myuser/mydata/myfile/data.log
/home/myuser/mydata/myfile/myfile.gz
/home/myuser/mydata/myfile/mod.conf
/home/myuser/mydata/myfile/security
/home/myuser/mydata/myfile/last
最后,我想看看:
/home/myuser/mydata/myfile/data.log log
/home/myuser/mydata/myfile/myfile.gz gz
/home/myuser/mydata/myfile/mod.conf conf
/home/myuser/mydata/myfile/security security
/home/myuser/mydata/myfile/last last
必须有一种方法可以使用正则表达式和 sed 来做到这一点,但我想不通。
有什么建议吗?
编辑:
我需要通过命令行获取此信息。看到目前为止的答案,我显然还没有说清楚。因此,对于我提供的示例数据,假设数据都是通过 greps 和 seds 提供的(数据已经被消除)。我需要能够将示例数据通过管道传输到 sed/grep/awk/whatever 以产生所需的结果。
【问题讨论】:
-
我不能给你实际的解决方案,但是这样做的方法。您必须在最后找到的“。”处“拆分”。如果我们从 0 开始索引,则字符和第一个元素将是您的扩展名。如果没有“。”发现您的结果应该是最后一个“/”字符之后的字符串。此外,谷歌搜索“bash 获取文件扩展名”。祝你好运。
-
与其查看扩展名,不如使用
file。见man file -
@fedorqui 我不觉得这是重复。我需要能够通过命令行工具获取此信息。也许我没有说清楚。原始数据通过 grep 和 sed 提供。我需要能够通过管道获取结果。另外,在您立即否决我的问题之前,请先询问我的澄清。如果我发现我的问题是重复的,我完全有能力将其标记为重复。
-
@jasonmclose 这不是重复,但您可以从中获得主要思想:获取扩展名和名称。剩下的就是遍历你收到的输出了。
-
这不是重复因为这些例子:/mod.conf conf /security security。注意他有时需要扩展名,有时需要文件名。