Eine meiner üblichen Vorgehensweisen besteht darin, alle Dateien eines bestimmten Typs zu prüfen, z. B. alle HTML-Dateien zu finden, in denen das Wort "Rumpus" vorkommt. Um es zu tun, benutze ich
find /path/to -name "*.html" | xargs grep -l "rumpus"
Gelegentlich find
wird eine Datei mit einem Leerzeichen im Namen wie zurückgegeben my new file.html
. Bei der xargs
Übergabe an grep
erhalte ich jedoch die folgenden Fehler:
grep: /path/to/bad/file/my: No such file or directory
grep: new: No such file or directory
grep: file.html: No such file or directory
Ich kann sehen, was hier vor sich geht: Entweder die Pipe oder die xargs
behandelt die Leerzeichen als Begrenzer zwischen Dateien. Für das Leben von mir kann ich jedoch nicht herausfinden, wie ich dieses Verhalten verhindern kann. Kann man das mit find
+ machen xargs
? Oder muss ich einen ganz anderen Befehl verwenden?
Wenn Fund und xarg Versionen auf Ihrem System nicht unterstützt
-print0
und-0
Schalter (zum Beispiel AIX find und xargs) können Sie verwenden:Hier kümmert sich sed darum, die Plätze für Xargs zu verlassen.
quelle
find
alle wieder gehen.