Ich versuche, dieses Verhalten zu erzeugen:
grep 192.168.1 *.txt
Durch die Übergabe eines Strings an grep über Xargs wird dieser aber am Ende statt als erster Parameter übergeben.
echo 192.168.1 | xargs grep *.txt
Ich muss xargs (oder etwas Ähnliches) anweisen, den eingehenden String zwischen 'grep' und '*' zu setzen, anstatt am Ende.
Wie mache ich das?
Antworten:
Beispiel
Beispieldateien:
Beispiellauf:
quelle
Ein anderer Ansatz:
Dadurch wird die Befehlszeilenlänge der Shell bei zu vielen Dateinamen nicht überschritten. Um zu vermeiden , verwirrend
xargs
/grep
mit Dateinamen , die Leerzeichen enthalten,-print0
und-0
Optionen werden jeden gefundenen Namen mit einem Null anstelle eines LF umreißen.quelle