在 Linux 中递归列出具有权限的文件的完整绝对路径

在 Linux 中递归列出具有权限的文件的完整绝对路径

我在网上搜索了一些,试图找到一种方法来递归列出所有文件及其绝对路径和权限。我想这样做是为了找出grep我想要的东西,这样当我运行命令时,我就可以得到匹配的文件、它们的权限和它们的完整路径,比如:

<search command> | grep file.name

输出:

/home/current/Desktop/file.name
/etc/program/src/file.name

我更喜欢使用,ls因为它是最快的,我会输入:

ls -alR $PWD/

但这并没有显示文件的路径,所以如果我grep'ed输出,那么我会看到文件权限,但不会看到它起源的目录。

我可以使用lsfind和的集成grep来获得我想要的格式的输出,我可以使用如下内容:

ls -ault `find $PWD/ -type f` | grep file.name

但这非常慢,我猜是因为实际上有两个命令正在运行。

如果我只是使用find不带lsgrep,那么它会更快,但是输入会很多:

find $PWD/ -type f -name file.name -printf '%M %u %g %s\t%a\t%p\r\n'

这将给我一个很好的格式(它还包括用户、组、大小和上次访问日期,这很有用)。然而,这是一个来输入,而且它肯定不如使用lswith那么快grep

有没有比使用更快的方法来完成我想做的事情find

答案1

而不是ls或者find你可以尝试tree。具体tree -ifpugDs $PWD应该会给你你想要的东西。

-if删除缩进线并打印出路径

-p打印权限

-ug打印用户和组

-D打印修改时间

-s打印尺寸

答案2

如果输入有问题,那么将已有的内容放入函数中怎么样:

myspecialfinder() {
  find $PWD/ -type f -name "$1" -printf '%M %u %g %s\t%a\t%p\r\n'
}

你可以使用它作为

myspecialfinder file.name

答案3

简单回答:find -type f -print0 | xargs -0 ls -al

答案4

find <path> -ls有用。我也在寻找同样的东西,但没有tree安装。

相关内容