recursive ls和grep会比在大型文件系统上查找更快吗?

jya*_*ski 0 filesystems bash shell recursion find

我有一个可以使用理论答案的问题.

我正在搜索具有特定属性的所有文件的大量100 + TB卷.为此,我一直在使用"查找"命令,因为它可以完成我想要的所有操作.

也就是说,除了在合理的时间内运行.我意识到遍历一个庞大的文件系统在任何情况下都会非常耗时,但我可能会遇到一个可能的解决方案.

如果可能的话,会递归地使用ls和grep怎么办?注意:下面的代码并不意味着语法正确.这只是为了说明.

my_ls{
    # get a listing of all files in the directory passed
    var=`ls -lsa $1`
    # iterate over each file/directory returned by ls
    for each file/directory in $var
        if $each is a directory
            my_ls $each
    done
    # search the lines output from ls for the attributes
    echo $var | grep $searchstring
}
Run Code Online (Sandbox Code Playgroud)

这个想法总体上会比找到大型文件系统更快吗?内存需求可能会很快变大,但不会太大.也可以将其并行化,并将线程卸载到GPU以便更快地处理(不是我知道的bash,但一般而言).

编辑:是的,在大多数情况下,我建议对io-bound操作进行并行化是非常暗淡的.

Cha*_*ffy 5

使用lsgrep不仅速度较慢(增加了分支,等待,读取和写入管道的开销等); 它也是不正确的.

请参阅http://mywiki.wooledge.org/ParsingLs,了解为什么ls在脚本中使用是邪恶的(在"导致错误,其中一些是安全可利用的"意义上).