Unix 复杂目录问题
Unix Complex Directory Issue
我有一个名为 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"
的特定行并将其重定向到新文件吗?
使用find
代替grep
find . -name "*" -type f -exec grep "router" {} \; > new_file.txt
它将在 (.
) 目录中找到每个文件 ("*"
),然后为每个文件找到 grep "router"
。
此致
克劳迪奥
我有一个名为 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"
的特定行并将其重定向到新文件吗?
使用find
代替grep
find . -name "*" -type f -exec grep "router" {} \; > new_file.txt
它将在 (.
) 目录中找到每个文件 ("*"
),然后为每个文件找到 grep "router"
。
此致
克劳迪奥