首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux:查找命令性能问题

Linux:查找命令性能问题
EN

Stack Overflow用户
提问于 2017-08-26 05:03:48
回答 2查看 1.3K关注 0票数 0

我需要某个目录中的文件列表,所以我使用这个命令在linux机器上查找文件:

代码语言:javascript
复制
find /some_directory -depth -maxdepth 1 -mindepth 1 -exec basename {} \;

但是由于有超过200k的文件,它花费了大量的时间(~ 35分钟)。这能被优化吗?还是有更好的选择?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-26 05:52:36

您可以使用-printf来模拟basename,这将消除对任何附加进程的需求:

代码语言:javascript
复制
find /some_directory -maxdepth 1 -mindepth 1 -printf '%f\n'
票数 1
EN

Stack Overflow用户

发布于 2017-08-26 05:13:11

低性能是由于调用basename 200,000次的开销。在没有-exec选项的情况下运行-exec,并将输出用-exec或其他一些将路径名转换为basenames的好语言输送到脚本中,例如:

basename.py:

代码语言:javascript
复制
import os,sys
for line in sys.stdin:
    print(os.path.basename(line), end='')

壳牌:

代码语言:javascript
复制
find /some_directory -maxdepth 1 -mindepth 1 | python basename.py
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45892097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档