7

我有这行:

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

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

[编辑] 我想要的输出是排序后的内容。

4

2 回答 2

10

为了完整起见,这里有更多方法可以做到这一点:

  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
于 2013-08-10T04:08:15.383 回答
0

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

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

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

于 2013-08-10T03:56:40.567 回答