Ordner mit bestimmten Inhalt anzeigen

Tungdil

Aktives Mitglied
Thread Starter
Dabei seit
09.12.2015
Beiträge
115
Reaktionspunkte
5
Hallo,
ich suche eine Möglichkeit nach Ordner zu suchen die einen bestimmten Inhalt haben.
Beispiel:
Alle ORDNER anzeigen in denen sich ein PDF Dokument befindet. Es sollen aber nicht die
einzelnen PDFs angezeigt werden sondern nur die Ordner

Ich hoffe das ich mich klar ausgedrückt habe.
 
Das scheint sich mit der Ansicht sehr guten Suche im Finder nicht darstellen zu lassen.
 
Das geht mit dem Terminal und [find].
 
@KOJOTE
Danke für den Hinweis.
Das habe ich im Terminal geschafft und mir das ganze in eine Text Datei umgeleitet.
Nun mein nächstes Problem: Ich möchte alle gefundenen Ordner auf eine externe Festplatte kopieren.
Wie stelle ich das mit der erstellten Textdatei an?
 
Zu aller erst: Wie hast du das gemacht?

Dann wäre vermutlich copy [cp] dein nächster Befehl: Stichwort „terminal find und copy files“
 
Wie stelle ich das mit der erstellten Textdatei an?

Was steht denn genau in der Textdatei.

Wenn dort die Pfade zu den Ordnern drin stehen, kann man über den Inhalt der Datei loopen (im Terminal) und die Ordner samt Inhalt (Parameter -R) mit cp auf die externe Festplatte kopieren.
Wenn du den Inhalt der Datei auch per Terminal erstellt hast, brauchst du wahrscheinlich gar nicht den Zwischenschritt über die Datei gehen und kannst beides in einem Befehl (oder Shell-Skript) erledigen.
 
@Haskelltier
Die Textdatei sieht so aus:
/home/dirk/QNAP/Daten-Dirk/Musik/MUSIK DIRK/BAP/1979 - Rockt andere kolsche leeder
/home/dirk/QNAP/Daten-Dirk/Musik/MUSIK DIRK/BAP/1980 - Affjetaut
/home/dirk/QNAP/Daten-Dirk/Musik/MUSIK DIRK/BAP/1981 - Fuer Usszeschnigge
/home/dirk/QNAP/Daten-Dirk/Musik/MUSIK DIRK/BAP/1982 - Vun Drinne Noh Drusse
/home/dirk/QNAP/Daten-Dirk/Musik/MUSIK DIRK/BAP/1983 - Bess Demnähx Live
/home/dirk/QNAP/Daten-Dirk/Musik/MUSIK DIRK/BAP/1984 - zwesche Salzjebäck un Bier
/home/dirk/QNAP/Daten-Dirk/Musik/MUSIK DIRK/BAP/1985 - Ahl Männer, Aalglatt
/home/dirk/QNAP/Daten-Dirk/Musik/MUSIK DIRK/BAP/1988 - Da Capo

Das ist nur ein Auszug davon.
Wie gehe ich jetzt weiter vor?
Was meinst du mit "Inhalt der Datei loopen"?
Den find Befehl kannte ich noch aus meiner Linux Zeit aber dann hört es auch langsam auf
 
Ich bin zwar nicht angesprochen aber was du per [find] im Terminal gefunden hast kannst du doch um den Befehl [cp] erweitern. Probier das doch mal mit einer einzelnen Datei aus.
Wenn das Ziel (Edit: die externe Platte) für den Befehl [cp] bereits gemounted ist, dann kannst du die Platte als Pfad auch ins Terminal ziehen.
 
Was meinst du mit "Inhalt der Datei loopen"?

Naja, mit beispielsweise einer while loop zeilenweise durch die Datei gehen und mit cp -R den Ordner auf die externe Festplatte kopieren. Oder du nutzt direkt die Ausgabe deines find-Befehls ohne sie vorher in eine Datei zu schreiben.
 
@KOJOTE
Wollte dich nicht ausschließen:rolleyes:
Wäre der Befehl dann so in etwa richtig?

cp -R -a find ~/QNAP/Daten-Dirk -iname *.mp3' | sed 's|/[^/]*$||' | awk '!a[$0]++' /media/dirk/MUSIK-EXTERN
 
Die Synax sähe in etwa so aus:

find <path> <condition> -exec cp '{}' <copy path> \;

Dein Code ist so glaub ich nicht zu gebrauchen, ich bin aber auch kein Experte. ;)
Dein bereits erfolgter Befehl [find] zur Quelle, ohne den Befehl zum Erstellen einer Textdatei, ergänzt um Copy [cp] und um den Pfad zu Ziel.

EDIT: Ich suchte hier auf Stackoverflow nach einer Lösung
 
Erst mal allen mein Dank für eure Hilfe.:)
Leider bin ich nicht weiter gekommen. Ich habe zwar die Textdatei aber das wars.
Falls noch jemand eine Idee hat immer her damit...
Ich dachte es gäbe dafür irgend ein Tool aber ich kann nichts finden...
 
@Tungdil
Ich habe dir mal ein Beispiel geschrieben. Gesucht werden im Beispiel alle .mp3-Dateien und diese werden dann auf eine Externe Platte mit dem beispielhaften Namen iTunes Backup und in den Ordner mit dem beispielhaften Namen Externe Platte iTunes verschoben kopiert.
Wie du an den Pfad kommst habe ich weiter oben bereits beschrieben.

Code:
find . -name "*.mp3" -exec cp '{}' /Volumes/iTunes\ Backup/Externe\ Platte\ iTunes \;

Für die o.g. Aktion bin ich als Admin in meinem Benutzer angemeldet.

Edit: Vielleicht mögen sich ja noch ein paar Experten mit Verbesserungsvorschlägen melden. Ich habe es jedenfalls getestet und hier unter 10.14.2 klappt es.
Allerdings kopiere ich auch nicht auf ein NAS.
 
Code:
find ~/folder -iname "*.mp3" -print0 | xargs -0 -I% dirname % | sort -u | xargs -I% rsync -av % /Volumes/whatever

zum testen (-n dry run):
... rsync -avn ...
 
  • Gefällt mir
Reaktionen: KOJOTE
Code:
find ~ -iname "*.mp3" -print0 | xargs -0 -I% dirname % | sort -u | xargs -I% rsync -av % /Volumes/whatever
Hast du Lust ein paar Worte der Erklärung abzugeben?
Vor allem für diesen Bereich
-print0 | xargs -0 -I% dirname % | sort -u | xargs -I% rsync -av %

EDIT: -n ist sozusagen der trockene Lauf, also ohne dass was passiert
 
Zuletzt bearbeitet:
Code:
find ~/folder -iname "*.mp3" -print0 | xargs -0 -I% dirname % | sort -u | xargs -I% rsync -av % /Volumes/whatever

zum testen (-n dry run):
... rsync -avn ...
Wenn ~/folder im Code mit enthalten ist, bringt es eine Fehlermeldung:
No such file or directory
 
Du mußt schon den gewünschten Ordner eingeben, z.B.: ~/Music
Gruß
win2mac
 
  • Gefällt mir
Reaktionen: KOJOTE
Hast du Lust ein paar Worte der Erklärung abzugeben?
lass einfach die letzten beiden pipes+commands, dann die letzte pipe+command weg. dann sieht man ja was passiert.
an sich ist es eine funktionierende #11.
 
  • Gefällt mir
Reaktionen: KOJOTE
Zurück
Oben Unten