2013-08-10 8 views
5

Ich habe die Zeile:Bash: Sortieren von Dateien aus ‚finden‘ von Inhalten

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

Ich mag den Inhalt extrahieren (der Text sein soll) alle Dateien zurück und Rohr, das in sort sortiert werden alphabetisch. Ich habe versucht, die Ausgabe der obigen Zeile direkt in sort zu leiten, aber das führt dazu, dass die Dateinamen sortiert werden und nicht ihre Inhalte. Muss ich die Ausgabe von find in ein Array umwandeln und dann von sort verarbeiten lassen?

[Bearbeiten] Die Ausgabe, die ich will, ist der sortierte Inhalt.

+2

Rohr es durch 'xargs cat' dann durch' sort'. –

+0

Danke! Das hat perfekt funktioniert –

Antwort

8

Der Vollständigkeit halber sind hier noch ein paar Möglichkeiten, dies zu tun:

  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

Wenn Sie die sortierte Ausgabe in eine Datei speichern möchten, versuchen Sie:

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

sonst bekommen nur loswerden > sorted.txt und die sortierte Ausgabe wird dem Terminal-Fenster gedruckt werden.

Verwandte Themen