staging.inyokaproject.org

Shell-Skript: Dateien in Unterverzeichnissen suchen und verschieben

Status: Ungelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

fsdiofnsdifbhisd

Anmeldungsdatum:
16. Juli 2010

Beiträge: 7

Hallo Communitys,

Frage zum einen shell skript:

Ich habe vor aus Unterverzeichnissen (also /verzeichnis/*):

1
2
3
/verzeichnis/unterverzeichnis1/bild1.jpg
/verzeichnis/unterverzeichnis2/unterunterverzeichnis21/bild2.jpg
/verzeichnis/unterverzeichnis3/unterunterverzeichnis31/bild3.jpg

usw. alle Datein automatisch zu suchen und diese in ein neues Verzeichnis /neuesverzeichnis/ zu verschieben. Anschließend kann das Verzeichnis /verzeichnis/* gelöscht werden (das bekomme ich hin). Es handelt sich nur um *.jpg Dateien, falls das wichtig ist.

Im /neuesverzeichnis/ liegen dann die Bilder:

1
2
3
bild1.jpg
bild2.jpg
bild3.jpg

Danke schonmal.

ChickenLipsRfun2eat Team-Icon

Supporter
Avatar von ChickenLipsRfun2eat

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12070

Hallo!

Steinaltes Ubuntu, du solltest über was aktuelleres nachdenken.

Was deine Anfrage angeht: find ist dafür wie geschaffen. find -iname "*.jpg" -exec mv "{}" …. Allerdings solltest du aufpassen, da Dateien mit gleichem Namen überschrieben werden.

fsdiofnsdifbhisd

(Themenstarter)

Anmeldungsdatum:
16. Juli 2010

Beiträge: 7

Ah super danke. Es handelt sich um einen Managed Server bei einem Hoster. Hier im Forum musste man (warum auch immer) bei "kein Ubuntu" trotzdem eine Distribution auswählen. PS: habs umgestellt bekommen.

Der vollständige Befehl lautet dann also (?):

1
find /verzeichnis/ -iname "*.jpg" -exec mv "{}" /neuesverzeichnis/

Dateien mit gleichem Namen überschreiben: das ist kein Problem und auch gewollt.

ChickenLipsRfun2eat Team-Icon

Supporter
Avatar von ChickenLipsRfun2eat

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12070

fsdiofnsdifbhisd schrieb:

… Managed Server bei einem Hoster. …

Da solltest du aufpassen. Find existiert in diversen Implementierungen (gröbster Unterschied dürfte BSD/Linux sein) und du solltest die manpage deines OS verwenden!

Was läuft da konkret?

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 12527

Etwas effizienter:

1
find /verzeichnis/ -iname '*.jpg' -exec mv -t /neuesverzeichnis/ {} +

Löschen der leerem Verzeichnisse müsste ungefähr so gehen

1
find /verzeichnis/ -type d -empty -delete -print

Der "-print" am Ende ist nur für die Ausgabe.

fsdiofnsdifbhisd

(Themenstarter)

Anmeldungsdatum:
16. Juli 2010

Beiträge: 7

Welches System darauf läuft: Der Hoster schreibt nur Debian-Linux 64bit.

Ich werde dies nächste oder übernächste Woche umsetzen.

Vielen Danke für eure Hilfe.

Antworten |