关于linux:结合find和ls

Combining find and ls

我尝试在ls输出上使用find或grep。

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


使用find-printf标志:

1
2
3
4
find . -name"a*" -printf"%u %f
"

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

来自man find

-printf format

%u File's user name, or numeric user ID if the user has no name

%f File's name with any leading directories removed (only the last element).


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

在Linux上,使用gnu stat,可以使用

1
stat -c%U file...

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

1
stat -f%Su file ...

(如果您希望使用uid而不是用户名,则分别使用-c%u-f%u


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

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

但你的看起来不错。问题是

1
2
find . -name"M*" -printf"%u %f
"

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


考虑添加这样的Perl OneLiner:

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

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