staging.inyokaproject.org

Brauche Hilfe bei find-Befehl

Status: Gelöst | Ubuntu-Version: Kubuntu 17.10 (Artful Aardvark)
Antworten |

moonwalker3

Anmeldungsdatum:
30. Juni 2008

Beiträge: 802

Ich möchte mir anzeigen lassen, wie viele Dateien in jedem Unterverzeichnis vorhanden sind und die Informationen in eine Datei speichern. Sollte eigentlich nicht so schwer sein.

1
find Dokumente/ -type d -exec echo {}>>info.txt;ls {}|wc -l>>info.txt \;

Als Ausgabe erhalte ich:

find: Fehlendes Argument für »-exec«.
Try 'find --help' for more information.
wc: ';': Datei oder Verzeichnis nicht gefunden
ls: Zugriff auf '{}' nicht möglich: Datei oder Verzeichnis nicht gefunden

Was ist da falsch?

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Hallo!

1
find ~/Dokumente/ -type d -exec sh -c 'echo "{}" >> ~/info.text; ls "{}" | wc -l >> ~/info.text' \;

würde das so machen. Zum einen wegen den möglichen Leerzeichen in Anführungszeichen und für die Kombination der Befehle eine subshell aufmachen. (Pfad habe ich mal neutral gemacht. In deiner Version musst du im Stammordner von "Dokumente" sein.

moonwalker3

(Themenstarter)

Anmeldungsdatum:
30. Juni 2008

Beiträge: 802

Danke, hat geklappt!

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

Es gibt noch eine einfachere (und auch schnellere) Lösung:

1
find -type f -exec dirname {} + | sort | uniq -c

Bei mir funktioniert die andere Lösung auch nicht sauber:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
$ time find -type f -exec dirname {} + | sort | uniq -c >/dev/null

real	0m1.392s
user	0m0.940s
sys	0m0.188s
$ time find -type d -exec sh -c 'echo "{}" >> ~/info.text; ls "{}" | wc -l >> ~/info.text' \; >/dev/null
sh: 1: Syntax error: "(" unexpected

real	0m16.344s
user	0m0.228s
sys	0m1.124s
Antworten |