我有以下命令,显示具有以下内容的文件/目录EXEC_EC
命令:
ls -ltr | grep 'EXEC_EC'
通过使用上面的命令:我们可以写一个find
命令来过滤7天之前创建的文件吗?
我正在尝试列出具有名称的文件EXEC_EC
并尝试查找超过 7 天的文件。
样本输出
example input:
dr-xr-xr-x 1 home abc 999 Jun 30 11:12 EXEC_EC_ABC_1
dr-xr-xr-x 1 home abc 999 Jul 25 12:44 EXEC_EC_ABC_2
dr-xr-xr-x 1 home abc 999 Aug 1 22:10 EXEC_EC_ABC_3
dr-xr-xr-x 1 home abc 999 Aug 2 22:20 Number
dr-xr-xr-x 1 home abc 999 Aug 2 22:20 Number2
i am trying to get below output
EXEC_EC_ABC_1
EXEC_EC_ABC_2
答案1
grep
如果无论如何使用的话,用于过滤是没有意义的find
。
find . -mindepth 1 -maxdepth 1 -name '*EXEC_EC*' -mtime +7
默认情况下find
遍历整个子树(即所有子目录的内容)。-mindepth 1 -maxdepth 1
防止这种情况发生,因为该示例仅适用于单个目录的内容。-mindepth 1
使find
忽略目录参数(在本例中,.
,不是必需的,但在一般情况下)。-maxdepth 1
防止下降到子目录。
答案2
这就是您要找的东西?
$ find . -name '*EXEC_EC*' -mtime +7 -print
。 = 代表您当前的目录,您可以将其替换为目录路径。
-mtime - 表示文件修改时间,用于查找超过7天的文件。
答案3
您不需要将 ls 的输出通过管道传输到 grep 中。 Grep 有一个内置选项。
grep -rle 'EXEC_EC'
-l 只会列出文件 -r 递归意味着将从当前路径开始遍历所有文件 -e 在此 grep 期望您的模式作为字符串之后