我有一个可以使用理论答案的问题。
我正在为具有特定属性的所有文件搜索一个 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
}
这个想法总体上会比查找大型文件系统更快吗?内存需求可能会很快变大,但不会太大。也可以将其并行化,并将线程卸载到 GPU 以加快处理速度(不是我知道的 bash,但一般来说)。
编辑:是的,在大多数情况下,我对建议并行化 io-bound 操作很不满意。