哪个命令可以列出特定月份创建且所有者可读的文件?

哪个命令可以列出特定月份创建且所有者可读的文件?

我应该找到列出 9 月份创建且所有者可读的所有文件的命令。还请解释该命令的工作原理。

我知道我应该使用

ls -l

我会|在其中的某个地方使用但不确定管道之前和之后是什么。

答案1

对于日期范围,您可以使用一个技巧。首先使用 touch 创建两个虚拟文件,如下所示:

touch -t 201209010000 /tmp/1sept
touch -t 201209302359 /tmp/30sept

正如您所看到的,他们现在有了期望的创建日期:

$ ls -l 1sept 30sept 
-rw-rw-r-- 1 topr topr 0 Sep  1 00:00 1sept
-rw-rw-r-- 1 topr topr 0 Sep 30  2012 30sept

现在您已准备好执行最后一个命令:

find /thepath/you/like -type f -newer /tmp/1sept -and ! -newer /tmp/30sept -exec stat -c '%A %n' {} \; | grep '^.r'

稍微解释一下:

  • -type f 仅搜索文件
  • -newer !-和-newer使用虚拟文件作为模板设置你喜欢的日期范围
  • -exec 对每个找到的文件触发一个命令,写为 {} \;
  • stat 命令打印有关文件的信息,%A 表示人类可读的访问权限字符串,如 -rw-rw-r-- 和 %n 打印文件名
  • grep '^.r' 使用常规例外过滤结果,仅显示以 <anycharacter>r 开头的行,因此检查文件所有者是否被授予读取访问权限

答案2

ls -lh应该以人类可读的长格式列出文件(取决于你的shell)。

现在,您想要grep(这是一个过滤程序)找到符合您要求的内容。

例如,要查找所有名为 david 且于 2011 年制作的文件,我可以使用:

ls -lh | grep "david" | grep "2011"

(是的,有更快、更简单的方法可以做到这一点,但我们的想法是让提问者觉得简单一点)。

在您的例子中,您想要过滤第一个文本块,以查找设置的可读位和 9 月的日期。查看输出ls -lh,您应该能够创建自己的 grep 命令。

答案3

试试这个。希望它能有所帮助:

ls -la | grep -e "Sep"

相关内容