【问题标题】:Unix Complex Directory IssueUnix 复杂目录问题
【发布时间】:2016-02-24 11:03:27
【问题描述】:

我有一个名为 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一个名为“路由器”的特定字符串并将其写入文件/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" 的特定行并将其重定向到新文件吗?

【问题讨论】:

    标签: bash unix grep cat


    【解决方案1】:

    使用find 代替grep

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

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

    问候

    克劳迪奥

    【讨论】:

    • 使用>> 而不是> 以避免覆盖
    • @ritesht93 f 你可以在循环中插入命令,如forwhile 是的,否则你不需要使用>>
    • 谢谢@Claudio。很高兴使用“查找”来做到这一点。反正很酷!
    猜你喜欢
    • 2016-03-28
    • 2020-03-13
    • 1970-01-01
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-25
    • 1970-01-01
    相关资源
    最近更新 更多