2014-10-30 47 views
-1

我想知道如何在bash中递归和同时搜索所有子文件夹。脚本首先列出所有子目录,然后同时转到每个子文件夹。然后,如果给定子目录中有子文件夹,则递归并发地转到子目录。如何在bash中的所有子文件夹中递归和同时查找文件

我一定不要用find。

我可以写一些递归函数去所有子文件夹,但我不知道如何使它并发:/

你有任何想法/线索,如何解决这个问题?

+1

你需要说明你的意思是并发的。您必须同时运行多个进程的唯一工具是在命令末尾使用'&'。这将在后台运行当前命令,然后在'&'d进程继续时读取脚本中的下一步。请注意,这是shell脚本中的一个高级主题,如果您需要按照特定顺序输出,它将变得更加复杂。编辑你的问题,包括你的问题的直观表示,然后所需的输出可能会帮助你在这里得到一些支持。祝你好运。 – shellter 2014-10-30 16:43:20

回答

2

这里是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" ...看到,如果你已经找到该文件。

+0

只需在递归调用后添加'&'使其并发。无论如何,这个要求真的很黑。 – tripleee 2014-10-30 16:44:59

+0

非常感谢您的帮助,但代码似乎不起作用。它没有找到任何文件。 Tahnk你,我知道如何使它现在同时发生。 – user2980480 2014-10-30 17:13:37

+0

此代码不会在任何if语句中输入。它挂在终端,我不知道为什么。它应该工作... – user2980480 2014-10-30 18:40:17

相关问题