问题描述
我需要获取系统上大约1M个文件的文件信息(名称,大小,修改日期)。
我目前使用的命令是:
$ b $ pre $ sudo查找$ FULFILLMENT$ ARCH1$ ARCH2 $ MASTERING-type f -exec ls -lT {} +
有没有办法改进这个?唯一的要求是我必须得到上述卷中的所有文件,并为每个文件,拉取名称,大小和date_modified。
(有没有办法做一个stat命令在这里,而不是?这会加快速度?)
这需要大约一个光纤连接的机器一小时。
ls
$ p $ sudo find ... -type f -printf'%p%s $ c $'$内置打印: t \\\
'
我不确定会有多快,但它会节省分支到 ls
,并且节省了必须再次查询磁盘以通过 ls
来检索信息 find
已经有了,所以它应该至少 。
在这种方式下,您可以在 -printf
中搜索 man find
以获得更多关于这些格式的信息字符串,特别是可以自定义上次修改时间的表示,并且可以为其他字段指定显式字段宽度。)
I need to get the file information (name, size, date modified) of about 1M+ files on a system.The command I am currently using is:
sudo find "$FULFILLMENT" "$ARCH1" "$ARCH2" "$MASTERING" -type f -exec ls -lT {} +
Is there a way to improve this? The only requirement is I must get all the files in the above volumes and for each file, pull the name, size, and date_modified.
(Is there a way to do a stat command here instead? Would that speed things up?)
This takes about an hour on a fiber connected machine.
Instead of farming the printing out to ls
, you can use find
's built-in printing:
sudo find ... -type f -printf '%p %s %t\n'
I'm not sure how much faster that'll be, but it saves the forking out to ls
, and it saves having to consult the disk a second time to retrieve information via ls
that find
already has anyway, so it should be at least somewhat faster.
(By the way, you can search man find
for -printf
for more information on those format strings. In particular, you can customize the presentation of the last-modified-time, and you can specify explicit field-widths for the other fields.)
这篇关于优化单行find + exec命令的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!