如何在 ls 的输出之上使用 find 命令

如何在 ls 的输出之上使用 find 命令

我有以下命令,显示具有以下内容的文件/目录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 期望您的模式作为字符串之后

相关内容