我在网上搜索了一些,试图找到一种方法来递归列出所有文件及其绝对路径和权限。我想这样做是为了找出grep
我想要的东西,这样当我运行命令时,我就可以得到匹配的文件、它们的权限和它们的完整路径,比如:
<search command> | grep file.name
输出:
/home/current/Desktop/file.name
/etc/program/src/file.name
我更喜欢使用,ls
因为它是最快的,我会输入:
ls -alR $PWD/
但这并没有显示文件的路径,所以如果我grep
'ed输出,那么我会看到文件权限,但不会看到它起源的目录。
我可以使用ls
与find
和的集成grep
来获得我想要的格式的输出,我可以使用如下内容:
ls -ault `find $PWD/ -type f` | grep file.name
但这非常慢,我猜是因为实际上有两个命令正在运行。
如果我只是使用find
不带ls
或grep
,那么它会更快,但是输入会很多:
find $PWD/ -type f -name file.name -printf '%M %u %g %s\t%a\t%p\r\n'
这将给我一个很好的格式(它还包括用户、组、大小和上次访问日期,这很有用)。然而,这是一个吨来输入,而且它肯定不如使用ls
with那么快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
安装。