结合find和ls

时间:2015-06-22 15:02:15

标签: linux bash shell grep find

我试图在LS输出上使用find或grep。

目前,ls -l正在打印大量的信息。但我只希望用户与文件名相关联。文件名可能是greped

4 个答案:

答案 0 :(得分:6)

find-printf标志一起使用:

find . -name "a*" -printf "%u %f\n"
find . -name "M*" -printf "%u %f\n"

来自man find

  

-printf格式

     

%u文件的用户名,如果用户没有姓名,则为数字用户ID

     

%f删除了任何前导目录的文件名(仅限最后一个元素)。

答案 1 :(得分:3)

大多数系统都提供stat命令,可以轻松生成有关文件(或文件列表)的任何信息。不幸的是,stat命令没有标准化,选项集也有很大差异。有关详细信息,请阅读系统上的man 1 stat

在Linux上,使用GNU stat,您可以使用

stat -c%U file...

在BSD(包括Mac OS X)上,您应该可以使用

stat -f%Su file ...

(如果您想要uid而不是用户名,则分别使用-c%u-f%u。)

答案 2 :(得分:0)

我自己找到了答案,但我的方式似乎更棘手。 我正在使用:

tr -s ' ' | cut -d ' ' -f3,9 | grep " $1.*"  

但你的看起来不错。事情是那个

find . -name "M*" -printf "%u %f\n"

还显示.git文件。我猜这个话题已经解决了,谢谢你的考虑!

答案 3 :(得分:-2)

考虑像这样添加perl oneliner:

ll | grep user_u | perl -lane 'print "$F[2] $F[8]"'

-lane允许使用空格作为分隔符对输出进行切片,$ F [2]和$ F [8]是感兴趣的切片(第一个切片是$ F [0])