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操作进行并行化是非常暗淡的.
使用ls和grep不仅速度较慢(增加了分支,等待,读取和写入管道的开销等); 它也是不正确的.
请参阅http://mywiki.wooledge.org/ParsingLs,了解为什么ls在脚本中使用是邪恶的(在"导致错误,其中一些是安全可利用的"意义上).
| 归档时间: |
|
| 查看次数: |
3235 次 |
| 最近记录: |