2013-08-10 9 views
5

mam wiersz:Bash: sortowanie plików z „odnaleźć” przez treść

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

Chcę wyodrębnić zawartość (który powinien być tekst) wszystkich plików powrócił i rura że w sort być sortowane alfabetycznie. Próbowałem wyprowadzić wyjście powyższej linii bezpośrednio do sort, ale powoduje to sortowanie nazw plików zamiast ich zawartości. Czy muszę przekształcić dane wyjściowe z find w tablicę, a następnie przetworzyć je przez sort?

[edytuj] Wyjście chcę jest posortowane zawartość.

+2

Rura go przez 'xargs cat' następnie przez' sort'. –

+0

Dzięki! To działało idealnie –

Odpowiedz

8

kompletności sake Oto kilka innych sposobów działania, które:

  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
0

Jeśli chcesz zapisać posortowane dane wyjściowe do pliku, spróbuj:

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

inaczej po prostu pozbyć > sorted.txt i klasyfikowane wyjście zostanie wydrukowany w oknie terminala.

Powiązane problemy