Es klingt, als würde der teeBefehl tun, was Sie wollen.
Der Schlüssel ist zu verwenden
>( ) zur Prozessersetzung . Mit teeVerwenden Sie das folgende Muster:
tee >(proc1) >(proc2) >(proc3) | proc4 Wenn Sie also die Ausgabe lsals Eingabe für zwei verschiedene grepProgramme verwenden möchten, speichern Sie die Ausgabe grepin verschiedenen Dateien und führen Sie alle Ergebnisse durch less:
ls -A | tee >(grep ^[.] > hidden-files) >(grep -v ^[.] > normal-files) | less Die Ergebnisse ls -Awerden in beide greps "geleitet" . Die Datei enthält hidden-filesden Inhalt der ersten Ausgabe grepund normal-filesdie Ergebnisse der zweiten grep. Alle Dateien werden im Pager angezeigt EDIT : Was Sie sehen, in less.lessder gleiche genaue Ausgabe von ls -A, nicht das Ergebnis der greps. Wenn Sie die Ausgabe von ändern möchten, ls -Aum less(zB Austausch der Auftrag so normale Dateien aufgelistet werden, bevor diejenigen versteckt), dann versuchen Sie dies:
ls -A | tee >(grep ^[.]) >(grep -v ^[.]) >/dev/null | less Ohne würde >/dev/nulldie Ausgabe von greps an die Ausgabe von angehängt, ls -Aanstatt sie zu ersetzen.