理論的な答えを使用できる質問があります。
特定の属性を持つすべてのファイルについて、100 TB を超える大規模なボリュームを検索しています。これを行うために、私は「find」コマンドを使用してきました。
つまり、妥当な時間内に実行することを除きます。いずれにせよ、巨大なファイルシステムをトラバースするには時間がかかることはわかっていますが、考えられる解決策が思い浮かびました。
可能であれば、再帰的に 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 バインド操作の並列化を提案することについて、私はかなり薄暗いです。