Unix复杂目录问题

时间:2016-02-24 11:03:27

标签: bash unix grep cat

我有一个名为Server的主文件夹,其中包含15(1...f) worker个文件夹,每个worker(1...f)个文件夹中都有slave(1...f)个子文件夹。在每个slave个子文件夹中,大约有大约2000个文件。

插图视图:

/服务器

/1  ----> 0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
/2  ----> 0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
/3  ----> 0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
/4  ----> 0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
/5  ----> 0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
/6  ----> 0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
/7  ----> 0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
/8  ----> 0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
/9  ----> 0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
/a  ----> 0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
/b  ----> 0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
/c  ----> 0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
/d  ----> 0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
/e  ----> 0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
/f  ----> 0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f

我需要grep一个名为" router"的特定字符串。在所有文件夹中的文件中同时将其写入文件夹中的所有文件/ cat并将其写入一个文件。

我试过猫,

#cat **/* > new_file.txt 

我得到bash: /bin/cat: Argument list too long作为回复

我试过grep,

#grep -e "router" **/* > new_file.txt

同样,我得到bash: /bin/cat: Argument list too long作为回应。

我知道这是复杂的目录问题。这不能改变,因为数据是从在线资源获得的。有人可以帮助如何使用从属文件夹的字符串"router"获取特定行并将其重定向到新文件?

1 个答案:

答案 0 :(得分:2)

使用find代替grep

find . -name "*" -type f -exec grep "router" {} \; > new_file.txt

它会找到("*")目录中的每个文件(.),然后找到每个文件grep "router"

此致

克劳迪奥