我有一些看起来像这样的目录和文件:
/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 $3}' | sort | uniq -c | sort -nr > finalOutput.txt
然后我得到我想要的,但只有该目录中的数据。我想把所有/ my / directories / sub目录中的所有东西都放到一个文件中。
我已尝试使用ls
或find
来完成此操作,但我无法使其正常运行。我知道你可以递归地用这种方式捕捉,类似于:
find /my/directories/ -name '*.txt' -exec cat {} \; > finalOutput.txt
但是,我还没有能够通过多管道命令来实现这一点。任何帮助表示赞赏。
答案 0 :(得分:1)
尝试使用xargs:
$ find . -name "f?" | xargs awk -F, '{ print $3 }' | 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
----
答案 1 :(得分:1)
...
})(typeof exports !== 'undefined' ? module.exports = require('dust-full') : dust);