PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie Dateien nach Typ (nicht Namen) Suchen und Kopieren?



Linus
01-04-2013, 09:26
Ich möchte rekursiv nach Dateityp suchen und die Treffer in ein Ziel-Verzeichnis kopieren.
Mein erster Ansatz ist:



find . -type f -exec file {} \; | grep -i image | cut -d ':' -f1 | sed 's/.*/"&"/' | xargs cp -a -t /tmp/foo/


Das funktioniert auch mit Dateinamen die Leerzeichen enthalten, aber:
a) gibt es bei gleichem Dateinamen eine Kollision und nur der jeweils erste Treffer wird kopiert
b) werden auch alle Dateien, die im Namen "image" enthalten mit kopiert, weil Daten und Metadaten gemischt sind

Wie bekomme ich diese Probleme weg? :confused:

tgn
26-05-2013, 17:39
Hallo Linus,

zu b)


find . -type f -exec file {} \; | grep ":.*.image data" > Imagelist.txt

schreibt die Liste aller Images in die Datei Imagelist.txt

zu a)
Das würde ich dann doch eher in Python lösen.

gruss tgn

Linus
26-05-2013, 19:30
Hallo Linus,

zu b)


find . -type f -exec file {} \; | grep ":.*.image data" > Imagelist.txt

schreibt die Liste aller Images in die Datei Imagelist.txt


Ja, danke, das sieht besser aus als mein Ansatz, wenn auch nicht ganz perfekt, aber es dürfte nur wenige Dateien geben, deren Name dieses Suchmuster erfüllt.
Und in eine Datei schreiben ist keine gute Idee; ich hatte schon Dateien mit mehreren Newlines im Namen und weitere Probleme mit anderen Sonderzeichen.