Bash:按内容从'find'对文件进行排序

时间:2013-08-10 03:25:10

标签: bash shell sorting find piping

我有一句话:

find -maxdepth 1 -type f -iname '*key*'  -not -name '*~'

我想提取返回的所有文件的内容(应该是文本),并将其传递到sort以按字母顺序排序。我已尝试将上述行的输出直接导入sort,但这会导致文件名被排序而不是其内容。我是否需要将find的输出转换为数组,然后由sort处理?

[edit]我想要的输出是已排序的内容。

2 个答案:

答案 0 :(得分:9)

为了完整起见,还有以下几种方法:

  1. find -maxdepth 1 -type f -iname '*key*' -not -name '*~' -exec cat {} \; | sort
  2. find -maxdepth 1 -type f -iname '*key*' -not -name '*~' | xargs cat | sort
  3. cat $(find -maxdepth 1 -type f -iname '*key*' -not -name '*~') | sort

答案 1 :(得分:0)

如果您想将已排序的输出保存到文件中,请尝试:

find -maxdepth 1 -type f -iname '*key*'  -not -name '*~' | cat | sort > sorted.txt

否则只是摆脱> sorted.txt,排序的输出将被打印到终端窗口。