Antworten:
xargs erstellt und führt Befehlszeilen über die Standardeingabe aus .
Die Syntax ist einfach:
ls | grep feeback | xargs open
Dies funktioniert nicht, wenn der Dateiname ein Leerzeichen enthält. Zum Beispiel für eine Datei mit dem Namen foo bar:
ls | grep foo | xargs open
Das obige würde versuchen, eine aufgerufene Datei foound dann eine aufgerufene Datei zu öffnen bar, da das Leerzeichen normalerweise Argumente trennt.
In diesem Fall können Sie den Dateinamen in Anführungszeichen setzen:
ls | grep foo | xargs -I '{}' open '{}'
Dieser Ansatz kann jedoch fehlschlagen, wenn der Dateiname Leerzeichen enthält.
Eine andere Option wäre find , bei der Pipes ganz vermieden werden:
find -maxdepth 1 -name '*foo*' -exec open '{}' \;
Hier wird -maxdepth 1die Suche nur im aktuellen Verzeichnis (dh ohne Unterverzeichnisse) durchgeführt, -name '*foo*'nach Dateien gesucht, deren Name die Zeichenfolge foo enthält -exec open {} \;, und {}durch den gefundenen Dateinamen ersetzt. find behandelt automatisch Sonderzeichen.
Durch Befehlsersetzung kann ein ähnliches Ergebnis erzielt werden:
open "$(ls | grep feedback)"
Dies funktioniert auch dann, wenn die Datei Leerzeichen enthält.
open *feedback*das eigentlich nicht genug?