Ich habe hier gelesen , dass Sie die Anzahl der Aufrufe von commandin zählen können, -exec command {} +indem Sie | wc -lbis zum Ende weiterleiten.
Ich verstehe zwar, dass dies -execdiranders ist, aber für jedes übereinstimmende Unterverzeichnis, das findentdeckt wird, wird ein Aufruf des commandUnterverzeichnisses ausgeführt, in dem es enthalten ist, wenn ich mehr als eine Datei habe, die in einem Unterverzeichnis übereinstimmt, sollte dies nicht der Fall sein Bekomme ich nicht die Anzahl der Aufrufe, die der Anzahl der übereinstimmenden Unterverzeichnisse entspricht, und nicht die Anzahl der Aufrufe, die der Anzahl der übereinstimmenden Dateien in diesen Unterverzeichnissen entsprechen?
Ich werde mit letzterem enden, wenn ich Folgendes ausführe:
$ find . -name "bob*" -execdir echo {} + | wc -l
Die Manpage für die execdir command {} +Staaten, dass die erstere der Fall sein sollte:
Wie bei der
-execAktion erstellt die+Form von-execdireine Befehlszeile, um mehr als eine übereinstimmende Datei zu verarbeiten, aber bei jedem Aufruf voncommandwerden nur Dateien aufgelistet, die im selben Unterverzeichnis vorhanden sind.
dh
Ich erhalte:
./file1inDir1
./file2inDir1
./file3InDir2
./file4InDir3
Wenn ich das erwarte, basierend auf der Manpage:
./file1inDir1 ./file2inDir1
./file3InDir2
./file4InDir3
echound die Argumente von generiert werden{} +und Sie keine Zeilenumbrüche in Ihren Dateinamen haben (die meisten Leute nicht), dann ist die Anzahl der Zeilen die Anzahl der Aufrufe und es funktioniert. Wenn Befehl gesagt wirdhead -n 999000 /dev/urandom, geht es schrecklich schief.