正在组合find和ls



我正在尝试对LS输出使用find或grep。

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

使用带有-printf标志的find

find . -name "a*" -printf "%u %fn"
find . -name "M*" -printf "%u %fn"

来自man find:

-printf格式

%u文件的用户名,或数字用户ID(如果用户没有名称)

%f删除所有前导目录的文件名(仅删除最后一个元素)。

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

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

stat -c%U file...

在BSD(包括MacOSX)上,您应该能够使用

stat -f%Su file ...

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

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

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

但你的似乎不错。问题是

find . -name "M*" -printf "%u %fn"

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

考虑添加一个perl oneliner,如下所示:

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

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

相关内容

  • 没有找到相关文章

最新更新