2012-07-25 4 views

Antwort

49

Enthält einer Ihrer Dateinamen ein Zitat? so etwas wie dieses versuchen:

find . "(" -name "*.m" -or -name "*.h" ")" -print0 | xargs -0 wc -l 

Das -print0 Argument sagt find die NULL-Zeichen zu verwenden, um jeden Namen zu beenden, die es druckt. Das Argument -0 teilt xargs mit, dass seine Eingabe-Tokens NULL-terminiert sind. Dies vermeidet Probleme mit Zeichen, die ansonsten als spezielle behandelt werden, wie z. B. Anführungszeichen.

+0

Vielen Dank Gary – Lena

+3

Ich habe versucht, alle .svn Ordner zu entfernen und unten ist für mich gearbeitet: finden ./ - Name ".svn" -print0 | xargs -0 rm -Rf –

+0

Einige Erklärungen wären willkommen;) – AsTeR

7

Dies kann passieren, weil Sie einen Apostroph in einem Dateinamen irgendwo ...

dh ->'

die problematische Datei zu finden, die folgend im Terminal laufen:

\find . | grep \' 

und es kann auch passieren, wenn Sie einen Alias ​​für XARGS-Setup haben, die ein Problem verursacht. Um zu testen, ob dies der Fall ist, führe einfach xargs mit einem '\' davor aus, z.

\find . | \xargs .... 

Die „\“ bedeutet einfach „den Befehl ohne Aliase ausführen“