【发布时间】:2012-08-31 05:10:48
【问题描述】:
从存储在文件f 中的文件名列表中,找到dir 下每个文件名的相对路径并将这个新列表输出到文件p 的最佳方法是什么?我目前正在使用以下内容:
while read name
do
find dir -type f -name "$name" >> p
done < f
对于大型列表或大型目录树来说太慢了。
编辑:一些数字:
-
dir下的目录数:1870 -
dir下的文件数:80622 -
f中的文件名数:73487
f 中列出的所有文件确实存在于dir 下。
【问题讨论】:
-
所以你的文件包含一个没有路径信息的文件名列表?您想如何处理多次出现的文件?我假设您希望将整个目录树加载到内存中以快速执行此操作,因为重复扫描磁盘永远不会足够快,但这是否可行取决于我们正在谈论的大小。恐怕我不知道 bash 式的方式来做到这一点,但如果可以的话,用 PHP 或类似的方式来做会很简单?
-
是的,只是文件名,结果必须包括所有可能的路径。可以将目录树加载到内存中,但我宁愿不使用 PHP,因为它没有安装。不过 Perl 或 Python 都可以。
-
+1 使用
while read name ... done < f