我想知道如何在bash中递归和同时搜索所有子文件夹。脚本首先列出所有子目录,然后同时转到每个子文件夹。然后,如果给定子目录中有子文件夹,则递归并发地转到子目录。如何在bash中的所有子文件夹中递归和同时查找文件
我一定不要用find。
我可以写一些递归函数去所有子文件夹,但我不知道如何使它并发:/
你有任何想法/线索,如何解决这个问题?
我想知道如何在bash中递归和同时搜索所有子文件夹。脚本首先列出所有子目录,然后同时转到每个子文件夹。然后,如果给定子目录中有子文件夹,则递归并发地转到子目录。如何在bash中的所有子文件夹中递归和同时查找文件
我一定不要用find。
我可以写一些递归函数去所有子文件夹,但我不知道如何使它并发:/
你有任何想法/线索,如何解决这个问题?
这里是bash中的一种功能,搜索文件:
search_file() # dir fname
{
local dir="$1" fname="$2" p
for p in "$dir"/* ; do
if test -d "$p" ; then
search_file "$p" "$fname"
fi
if test "$p" = "$dir/$fname" ; then
echo "$p"
fi
done
}
你也可以写if test "${p##*/}" = "$fname" ...
看到,如果你已经找到该文件。
只需在递归调用后添加'&'使其并发。无论如何,这个要求真的很黑。 – tripleee 2014-10-30 16:44:59
非常感谢您的帮助,但代码似乎不起作用。它没有找到任何文件。 Tahnk你,我知道如何使它现在同时发生。 – user2980480 2014-10-30 17:13:37
此代码不会在任何if语句中输入。它挂在终端,我不知道为什么。它应该工作... – user2980480 2014-10-30 18:40:17
你需要说明你的意思是并发的。您必须同时运行多个进程的唯一工具是在命令末尾使用'&'。这将在后台运行当前命令,然后在'&'d进程继续时读取脚本中的下一步。请注意,这是shell脚本中的一个高级主题,如果您需要按照特定顺序输出,它将变得更加复杂。编辑你的问题,包括你的问题的直观表示,然后所需的输出可能会帮助你在这里得到一些支持。祝你好运。 – shellter 2014-10-30 16:43:20