我如何递归执行具有多个管道的猫
How do I recursively perform a cat with multiple pipes
我有一些目录和文件如下所示:
/my/directories/directory0/
|
-->File1.txt
|
-->File2.txt
/my/directories/directory1/
|
-->File1.txt
|
-->File2.txt
/my/directories/directory2/
|
-->File1.txt
|
-->File2.txt
/my/directories/directory3/
|
-->File1.txt
|
-->File2.txt
这些是 CSV 文件,我正在尝试计算第 3 列,并从高到低排序。
现在我能够完成此操作,但仅限于每个目录 x。例如,如果我 运行 这个:
cd /my/directories/directory0/
cat *.txt | awk -F "," '{print }' | sort | uniq -c | sort -nr > finalOutput.txt
然后我得到了我想要的,但只有那个目录中的数据。我想将所有 /my/directories/ 子目录中的所有内容都放入一个文件中。
我曾尝试使用 ls
或 find
来完成此操作,但无法正常工作。我知道你可以用这种方式递归 cat,类似于:
find /my/directories/ -name '*.txt' -exec cat {} \; > finalOutput.txt
但是,我无法让它与多管道命令一起使用。感谢任何帮助。
尝试使用 xargs:
$ find . -name "f?" | xargs awk -F, '{ print }' | sort | uniq -c | sort -nr
4 3
1 z
1 three
1 c
1 5
$ find . -name "f?" -exec echo "File: " {} \; -exec cat {} \; -exec echo "----" \;
File: ./d0/f1
1,2,3
----
File: ./d0/f2
3,4,5
----
File: ./d1/f1
8,9,3
----
File: ./d1/f2
a,b,c
----
File: ./d2/f1
x,y,z
----
File: ./d2/f2
one,two,three
----
File: ./d3/f1
red,yellow,3
----
File: ./d3/f2
1,2,3
----
find . -name "File*" | xargs cut -d, -f3 | sort | uniq -c | sort -nr
我有一些目录和文件如下所示:
/my/directories/directory0/
|
-->File1.txt
|
-->File2.txt
/my/directories/directory1/
|
-->File1.txt
|
-->File2.txt
/my/directories/directory2/
|
-->File1.txt
|
-->File2.txt
/my/directories/directory3/
|
-->File1.txt
|
-->File2.txt
这些是 CSV 文件,我正在尝试计算第 3 列,并从高到低排序。
现在我能够完成此操作,但仅限于每个目录 x。例如,如果我 运行 这个:
cd /my/directories/directory0/
cat *.txt | awk -F "," '{print }' | sort | uniq -c | sort -nr > finalOutput.txt
然后我得到了我想要的,但只有那个目录中的数据。我想将所有 /my/directories/ 子目录中的所有内容都放入一个文件中。
我曾尝试使用 ls
或 find
来完成此操作,但无法正常工作。我知道你可以用这种方式递归 cat,类似于:
find /my/directories/ -name '*.txt' -exec cat {} \; > finalOutput.txt
但是,我无法让它与多管道命令一起使用。感谢任何帮助。
尝试使用 xargs:
$ find . -name "f?" | xargs awk -F, '{ print }' | sort | uniq -c | sort -nr
4 3
1 z
1 three
1 c
1 5
$ find . -name "f?" -exec echo "File: " {} \; -exec cat {} \; -exec echo "----" \;
File: ./d0/f1
1,2,3
----
File: ./d0/f2
3,4,5
----
File: ./d1/f1
8,9,3
----
File: ./d1/f2
a,b,c
----
File: ./d2/f1
x,y,z
----
File: ./d2/f2
one,two,three
----
File: ./d3/f1
red,yellow,3
----
File: ./d3/f2
1,2,3
----
find . -name "File*" | xargs cut -d, -f3 | sort | uniq -c | sort -nr