Liste der Dateien passende Muster, wenn zu viele für die bash-Shell-globbing
Möchte ich Folgendes ausführen:
ls /path/to/files/pattern*
bekommen und
/path/to/files/pattern1
/path/to/files/pattern2
/path/to/files/pattern3
Allerdings gibt es zu viele Dateien mit dem Muster in das Verzeichnis ein, und ich bekomme
bash: /bin/ls: Argument list too long
Was ist ein besserer Weg, dies zu tun? Vielleicht mithilfe der find-Befehl? Ich muss ausgedruckt werden die vollständigen Pfade zu den Dateien.
Haben Sie versucht
möglich, Duplikat der Argument-Liste zu lang Fehler, rm, cp, mv-Befehle
find /path/to/files -name 'pattern*'
?möglich, Duplikat der Argument-Liste zu lang Fehler, rm, cp, mv-Befehle
InformationsquelleAutor DavidR | 2013-06-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist, wo
find
in Kombination mitxargs
helfen.Hinweis aus den Kommentaren:
xargs
wird helfen, wenn Sie dies tun möchten, mit der Liste, sobald Sie es erhalten haben, vonfind
. Wenn Sie nur wollen, um eine Liste der Dateien, dannfind
sollte ausreichen. Allerdings, wenn Sie möchtencopy
,delete
oder irgendeine Handlung vorzunehmen, die auf der Liste, dann mitxargs
statt-exec
helfen.Nur gut, wenn Sie wollen, etwas zu tun, nachdem Sie haben, erhalten Sie eine Liste. Zum Beispiel kopieren Sie Sie irgendwo anders, oder löschen Sie Sie. In solchen Fällen
xargs
helfen. Wenn Sie nur wollen, um Sie aufzulisten, dann ja, brauchen Sie nichtxargs
.Toll-ich bin tatsächlich mit diesem Befehl Rohr in GNU parallel, die ich verwenden anstelle von xargs. [Kein Bedarf für die -print0 in diesem Fall.]
Gearbeitet... habe ich eine etwas andere version:
find / -name "pattern*" 2>/dev/null -print0 | xargs -0 ls -la
... die devnull Zeug unterdrückt Berechtigungen Fehler.InformationsquelleAutor jaypal singh