如何使用BASH查找文件的元信息

25
如何在BASH中找到文件的元信息?如何使用cut和grep命令提取和单独打印它?

2
什么是“元信息”?你尝试过什么? - Michał Górny
1
我找到了,它是 "ls -l"。 关于文件的信息, 如文件名、权限、文件所有者、日期等。 - Andy
12
请不要将每个单词都大写,这会让你的文章难以阅读。 - derobert
1
查找当前目录(点)中所有名为filename.txt的文件,然后使用xargs让ls从管道命令获取标准输入。然后使用-iSl对其进行排序并提供大小和日期。6710 -rw-rw-r-- 1 userA GroupB 2346 Nov 26 00:55 ./somefolder/filename.txt - The Demz
4个回答

22

不要使用 cut/grep 解析 ls 的输出,而应该使用 stat 命令,并使用 -c 参数指定输出格式。

anthony@Zia:~$ stat -c '%n : %A : %U : %s' afiedt.buf .XCompose 
afiedt.buf : -rw-r--r-- : anthony : 178
.XCompose : lrwxrwxrwx : anthony : 38

你可以按自己的意愿更改输出格式;请查看stat(1) manpage了解详细信息。


10

我猜你可能已经尝试过file命令了吧?它会尝试识别出这个文件是什么类型。


实际上,我的输出应该像这样:文件名: 文件类型: 文件所有者: 文件权限: 文件大小:我已经使用ls -l命令查找文件的元信息。我需要提取并打印它们,就像上面那样。 - Andy
2
@meandyxtreme 请看一下 cut 命令,它非常擅长从列中选择值。另外,请不要再使用“每个单词首字母大写”的写法了,这样很难阅读。 - HonkyTonk
抱歉每个单词都大写了。看看我打的代码: <code> [ur10cs164@linux lab]$ ls -l lab2.txt -rw-rw-r-- 1 ur10cs164 ur10cs164 801 Jul 19 16:40 lab2.txt </code> 上面这行显示了所有元信息。现在如何将它们分别提取出来呢?我尝试过使用“cut”命令,但可能我输入的格式不正确。请告诉我从中提取正确方法。 - Andy
@meandyxtreme,看一下上面derobert的答案。它展示了如何实现你想要的功能。 - HonkyTonk

7

在文件上执行stat -l命令:

[~]$ stat -l test.py
-rw-r--r-- 1 burhan staff 84 Aug  3 01:08:34 2012 test.py

要将这些信息存储到变量中:

[~]$ foo=$(stat -l test.py)
[~]$ echo $foo
-rw-r--r-- 1 burhan staff 84 Aug 3 01:08:34 2012 test.py

要获取特定信息,只需man stat并检查格式说明符。



网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接