Ich rufe eine Buchliste ab, nachdem ich die Python-Bücher im Home-Verzeichnis mit diesem Befehl unter OSX gesucht habe:
find ~ -type f -iregex '.*python.*\.pdf'
die Buchliste
...
.../Computing/Python/Beginning_Python.pdf
.../Python/Core.Python.Applications.Programming.3rd.Edition.pdf
.../Python/Packt.Mastering.Python.2016.4.pdf
...
Ich beabsichtige, ihren Status mit Befehl xargs
und zu überprüfenstat
$ find ~ -type f -iregex '.*python.*\.pdf' | xargs stat -x
# get error
xargs: unterminated quote
Versucht alternativ mit Option -0
find ~ -type f -iregex '.*python.*\.pdf' | xargs -0 stat -x
# get error
: stat: File name too long
Wie kann man ein solches Problem lösen?
stat -x
)-iregex '.*python.*\.pdf'
am übereinstimmt/path/to/python/whatever/foo.pdf
. Wenn Sie mit Dateien übereinstimmen möchten, deren Name (im Gegensatz zum vollständigen Pfad) enthältpython
und endet.pdf
, verwenden Sie-iname '*python*.pdf'
oder-iregexp '.*python[^/]*\.pdf'
Antworten:
-0
to xargs macht wenig Sinn, wenn Sie die Eingabe nicht so ändern, dass sie 0-getrennt ist. Versuchenfind ~ -type f -iregex '.*python.*\.pdf' -print0 | xargs -0 stat -x
quelle
xargs
Implementierungen haben auch die-r
Option, den Befehl nicht auszuführen, wenn die Eingabe leer ist (unter FreeBSD ist dies implizit).