如何在查找文件的同时查看文件的大小?错误:我试过这个命令,但我只得到了其他文件的大小和详细信息。
find -name "*.conf" | ls -l
Run Code Online (Sandbox Code Playgroud)
Lie*_*tok 13
find有一个-ls选项。所以你的命令应该是这样的:
find -name '*.conf' -ls
Run Code Online (Sandbox Code Playgroud)
一个选项是指定您自己的格式-printf。例如,这将输出文件大小,后跟一个空格,然后是文件名(带相对路径):
find -name "*.conf" -printf "%s %p\n"
Run Code Online (Sandbox Code Playgroud)
如果您希望使用 NUL 分隔查找的输出记录,您可以使用\0而不是结束您的格式字符串,\n以防您期望有趣的文件名(例如,包含换行符的文件名)。
作为记录,您的问题中显示的尝试不起作用,因为您正在尝试将输出从find输入到ls. ls不读取来自 STDIN 的任何输入,因此输出从 STDINfind被简单地丢弃,然后ls像往常一样列出当前目录的内容。
\n\n
其他答案已经指出了
\n\n\n\n然而,第一种和第二种方法 don\xe2\x80\x99t 给出ls -l(-ls标志等于ls -dils) 的精确输出,第三种方法需要额外的xargs调用。在标志的帮助下,可以直接从-exec\xe2\x80\x99调用:ls -lfind
find -name "*.conf" -exec ls -l {} +\nRun Code Online (Sandbox Code Playgroud)\n\n这给出了整个文件名列表作为参数ls -l,并根据需要多次调用它。
如果您只想匹配以.conf当前目录及其下结尾的每个文件(并且ARG_MAX\xe2\x80\x99t 不是问题!), 则实际上根本不需要 \xe2\x80\x99tfind。相反,您可以使用bash\xe2\x80\x99s 与globstar和dotglobshell 选项匹配,如下所示 \xe2\x80\x93 it\xe2\x80\x99s 同样明智,不会在文件名中的换行符上中断并匹配 \xe2\x80\ x9chidden\xe2\x80\x9d 文件,例如find:
$ shopt -s globstar dotglob\n$ ls -l **/*.conf\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
2423 次 |
| 最近记录: |