![Auflisten von Dateien in bestimmten Unterverzeichnissen](https://rvso.com/image/1558685/Auflisten%20von%20Dateien%20in%20bestimmten%20Unterverzeichnissen.png)
Ich habe eine Ordnerstruktur wie diese:
/1/a/x
/1/b/y
/2/a/z
/2/b/d
/3/a/r
/3/b/e
Ich möchte Dateien + Dateigröße für alle Dateien in Unterordnern in den Ordnern „a“ auflisten. Ich habe versucht, find zu verwenden, komme aber nicht weiter. Was wäre der richtige Befehl?
Antwort1
Versuchen Sie Folgendes, um Größe und vollständigen Pfad zu drucken.
find /[123]/a/* -type f -printf '%s %p\n'
Sehenman find
für andere Formatzeichenfolgen, die Sie mit verwenden könnten -printf
. Insbesondere möchten Sie möglicherweise %P
oder %f
anstelle von %p
und möglicherweise %b
anstelle von %s
.
[123]
passt zu einem Namen, der aus einer einzelnen Ziffer im Bereich 1-3 besteht; erweitern Sie es vielleicht auf *
oder etwas eingeschränkter, wenn Ihr Beispiel nicht genau der Realität entspricht, die Sie zu beschreiben versuchen.
GNU find
sollte Standard auf CentOS sein, aber wenn Sie richtig portablen Code benötigen, verwenden Sie vielleicht find ... -exec stat {} \;
(aber beachten Sie, dass stat
auch das Portabilitätsprobleme hat; der Befehl sollte auf den meisten Plattformen vorhanden sein, aber wie man ihn dazu bringt, etwas Bestimmtes zu drucken, variiert zwischen den Implementierungen). Eine andere Möglichkeit ist, find ... -ls
aber dann stehen Sie vorAnalyse ls
.
Wenn Sie keine Unterverzeichnisse durchsuchen müssen, brauchen Sie dies nicht find
.
stat -c '%s %n\n' /[123]/a/*/*