Hier vermeiden Dokumente die Erstellung einer Zwischen-Einmal-Datei. Ich hatte gehofft, dass ich davon Gebrauch machen könnte, wenn ich die vollständigen Pfade von 20 möglichen Dateien bekomme (ohne die Syntax find -o
zu verwenden). Ich erwartete folgendes Werk:grep -f mit einem hier Dokument
find | grep -f <<EOF
Controller.java
Main.java
Config.java
EOF
aber ich bekomme:
grep: option requires an argument -- f
Bin ich Missverständnis, wie hier Dokumente arbeiten? Oder spielt grep -f nicht gut mit Dateideskriptoren?
Ich bin auch offen für Lösungen mit find
, die eine Liste von -name
Werte nehmen kann, aber ich möchte nicht -o
20 mal eingeben müssen.
Beste Alternative:
cat <<EOF | xargs --delimiter '\n' --max-args=1 -I% find -iname "*%*"
Controller.java
Main.java
Config.java
EOF
Das ist intellektuell unbefriedigend, weil Sie find
auf der gesamten Dateihierarchie einmal für jedes Suchmuster ausführen, die nicht gut für große Verzeichnishierarchien skaliert.
Nicht folge total, aber willst du einfach 'grep -f-' wo sagt das grep eine Liste von Mustern aus dem Standard zu lesen? Sie müssten dann auch eine Liste von Dateien in der Befehlszeichenfolge angeben. – stevesliva
Hmmmm, es ist verwandt, aber ich glaube nicht, dass ich es über stdin weitergeben kann, weil ich das stdout des 'find' Befehls benötige, um die stdin zum' grep' Befehl zu sein. –