获取文件的 ctime、atime、mtime 和扩展属性

获取文件的 ctime、atime、mtime 和扩展属性

我想显示文件的 ctime、mtime 和 atime,以及它是否具有扩展属性。有 2 个命令可以执行此操作,但我无法将它们组合成单个命令以提供一行输出。

find /tmp -maxdepth 1 -printf "%a _ %c _ %t _ %P\n"

给出类似这样的输出:

Thu Aug 27 09:51:11 2015 _ Thu Aug 27 09:48:40 2015 _ Thu Aug 27 09:48:40 2015 _ tempfile.tmp

ls -l /tmp

给出类似这样的输出:

-rw-rw----+ 1 root root       5 Aug 27 04:39 tempfile.tmp

我只对 ls 输出中权限后的“+”符号感兴趣。

理想情况下,我希望输出类似于此:

+ Thu Aug 27 09:51:11 2015 _ Thu Aug 27 09:48:40 2015 _ Thu Aug 27 09:48:40 2015 _ tempfile.tmp
  Thu Aug 27 09:51:11 2015 _ Thu Aug 27 09:48:40 2015 _ Thu Aug 27 09:48:40 2015 _ anothertempfile.tmp

答案1

您可以编写一个小脚本来为您完成此操作(这很丑陋,但有效):

#!/bin/bash
for f in *; do
  flag="x"
  attr=$(getfattr $f)
    if [ "$attr" = "" ]
      then flag=" "
    fi
  find -name $f -printf "$flag %a _ %c _ %t _ %P\n"
done

答案2

因此,编写一个 shell 脚本将数据收集到变量中。将数据放入变量后,您可以重新格式化并按照您想要的方式打印它们。

相关内容