Linux:查找命令性能问题

时间:2017-08-26 05:03:49

标签: linux performance find

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

find /some_directory -depth -maxdepth 1 -mindepth 1 -exec basename {} \;

但由于文件超过200,000,所以需要花费大量时间(约35分钟)。这可以优化还是有更好的选择?

2 个答案:

答案 0 :(得分:1)

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

basename.py:

import os,sys
for line in sys.stdin:
    print(os.path.basename(line), end='')

外壳:

find /some_directory -maxdepth 1 -mindepth 1 | python basename.py

答案 1 :(得分:1)

您可以使用-printf模拟basename,这将消除对任何其他流程的需求:

find /some_directory -maxdepth 1 -mindepth 1 -printf '%f\n'