Shell *.JPG verschieben + Unterverzeichnisse

Hinweis: In dem Thema Shell *.JPG verschieben + Unterverzeichnisse gibt es 9 Antworten. Der letzte Beitrag () befindet sich ganz unten auf dieser Seite.
  • Morgen,


    und zwar möchte ich gern alle Bilder mit den Format JPG in einen Ordner verschieben, da die Bilder zur Zeit in ziemlich vielen Unterverzeichnissen verzweigt sind.



    MfG

    3 Mal editiert, zuletzt von Spekta ()

    Für den Inhalt des Beitrages 58673 haftet ausdrücklich der jeweilige Autor: Spekta

  • wenn du das über die shell oder bash-Konsole machen willst musst du als erstes ein Verzeichnis anlegen mit:


    mkdir - Make Directory
    Der Befehl mkdir dient zum anlegen von Verzeichnissen.
    Syntax:

    Code
    :~>$ mkdir [Verzeichnis]

    oder

    Code
    mkdir [Pfad zum Verzeichnis]


    Im Beispiel wird das Verzeichnis newdir angelegt, welches ein Verzeichnis newsub enthält:

    Code
    :~>$ mkdir newdir
    :~>$ mkdir /home/tim/newdir/newsub/
    :~>$


    Wobei ein:

    Code
    :~>$ mkdir newdir/newsub/

    auch für newsub gereicht hätte.


    Das kannst du natürlich auch ganz komfortabel mit Dolphin (das ist der Dateimanager) machen, in dem du die Ansicht Teilst und dann nach belieben Dateine, Ordner anlegen, kopieren, verschieben kannst.
    Das geht natürlich nur wenn diese Verzeichnisse, Dateien als User in dem 'home' -Bereich sich befinden. Sobald die Dateien,Verzichnise sich im Systembereich befinden ist ein einloggen über das Passwort von Nöten. In der bash dann 'sudo' voranstellen und nach Abfrage dann das Passwort oder gleich mit 'su' plus Passwort auf root gehen. Bei Dolphin im kickoff-Anwendungsstarter wenn du Systemdateien außerhalb des Userbereichs bearbeiten willst, den mit dem Systemverwaltungsmodus nehmen.
    Nachdem du Verzeichnisse und Unterverzeichnisse angelegt hast, kannst du die Dateien über die bash mit
    dem Befehl 'mv' verschieben.

    Code
    :~>$ mv [Quelle] [Ziel]


    Zu dem Befehl 'mv' gibt es den Parameter -i == interaktiv was bedeutet vor dem Überschreiben von Daten Rückfragen.
    Im Beispiel wird die Datei "minecraft.jar" aus dem HOME-Verzeichnis in Downloads/ verschoben:

    Code
    :~>$ mv minecraft.jar Downloads/
    :~>$

    Für den Inhalt des Beitrages 58677 haftet ausdrücklich der jeweilige Autor: Altrici

  • Danke für deine ausführliche Antwort, allerdings war ich soweit schon. Eingegeben habe ich folgendes:

    Code
    mv -i *.JPG Bilder


    Darauf habe ich folgende Meldung bekommen:

    Code
    mv: Aufruf von stat für „*.JPG“ nicht möglich: Datei oder Verzeichnis nicht gefunden



    MfG

    Für den Inhalt des Beitrages 58678 haftet ausdrücklich der jeweilige Autor: Spekta

  • Du musst Dich natürlich in dem Verzeichnis befinden, in dem die Bilder liegen oder den kompletten Pfad zu dem betreffenden Ordner angeben.
    Hast Du auch Gross und Kleinschreibung beachtet (Linux ist case sensitive)?
    *.jpg ist also was ganz anderes als *.JPG.
    Ausserdem musst Du natürlich auch ein Ziel angeben, wohin die Dateien kopiert werden sollen.
    Guck dir mal

    Code
    man mv


    an.

  • Groß und Kleinschreibung habe ich beachtet. Mir geht es ja darum das ich nicht in alle Verzeichnisse wechseln muss. Die Ordnerstruktur sieht nämlich so aus:


    Ich habe mein Anliegen jetzt erst einmal manuell gelöst. Wenn jemand allerdings noch eine Lösung findet, bitte ich ihn diese mir noch mitzuteilen, interessehalber.



    MfG

    2 Mal editiert, zuletzt von Spekta ()

    Für den Inhalt des Beitrages 58685 haftet ausdrücklich der jeweilige Autor: Spekta

  • also Ich möchte manchmal/öfters Bilder aus mehreren Verzeichnisses (d.h. aus Allem, die sich im aktuellem+Unterverzeichnissen) befinden in ein anderes Verschieben.


    [Grund ist, weil ich des öfteren gelöschte Dateien mit photorec wiederherstelle), diese jedoch des öfteren zig Verzeichnisse erstellt.


    Ich habe (glaube Ich) deshalb ein bash skript erstellt, welches diese Aufgabe erfüllen soll ;)



    //Edit by lush:
    Bitte Code-Tags verwenden.

    wie zu sehen, dieses verschiebt ggf. auch andere Formate (ja nach Dateiendungen).


    Wichtig ist, es werden Alle Dateien im Aktuellem Verzeichnis und deren Unterverzeichnisse verschoben, d.h. BITTE nicht im Root Verzeichniss mit ROOT Privilegien starten ;)

    Einmal editiert, zuletzt von lush ()

    Für den Inhalt des Beitrages 58699 haftet ausdrücklich der jeweilige Autor: DariusBrewka

  • Es reicht ein Befehl:

    Code
    mv *.{jpeg,jpg}  /Pfad/zu/JpegDir

    Es werden alle Dateinen, die auf "jpg" oder "jpeg" enden in das Zielverzeichnis verschoben.


    Willst du auch ".Jpeg" (also Großbuchstaben) mitverschieben, erweitere die geschweifte Klammer:
    {jpeg,jpg,Jpeg,Jpg}



    Soll die Verzeichnisstruktur erhalten bleiben, reicht auch eine etwas längere Zeile.
    (Der Übersichtlichkeit hier in mehreren Zeilen)

    Code
    while read pic ; do 
        path=$(dirname $pic)
        mkdir -p $Zieldir/$path 2>/dev/null
        mv $pic $Zieldir/$path
     done  < <( find .  -name '*.jpg' -a -name '*.jpg' )


    Für jede weitere "Dateinameserweiterung" füge ein
    -a -name '*.erweiterung'
    hinzu.
    -a == and



    Der "find" sucht ab dem aktuellen Verzeichnis (der Punkt hinter find) alle Dateien, füttert deren Pfade in die while- Schleife, wo erst der Verzeichnisteil mit "dirname" aus dem Pfadnamen geholt wird.
    Dann werden mit einem Schlag alle benötigten Unterverzeichnisse erzeugt,wobei eventuelle Fehler im Digitalpapierkorb landen (falls das Verzeichnis schon exisiert). Danach wird das Bild schlicht gemoved.

    4 Mal editiert, zuletzt von uhelp ()

    Für den Inhalt des Beitrages 58701 haftet ausdrücklich der jeweilige Autor: uhelp

  • find $WorkDir -iname '*.jpg' -exec mv '{}' $DestDir ';'


    Oh Gottohgott, der ist ja übel. Gibt es in den verschiedenen Ordnern gleichnamige Dateien, so überschreiben sie sich gegenseitig. Das gibt ein schönes Gemetzel und man kann froh sein, wenn nur die Hälfte der Dateien verschwunden sind.

    Für den Inhalt des Beitrages 58704 haftet ausdrücklich der jeweilige Autor: Easy

  • Oh Gottohgott, der ist ja übel. Gibt es in den verschiedenen Ordnern gleichnamige Dateien, so überschreiben sie sich gegenseitig. Das gibt ein schönes Gemetzel und man kann froh sein, wenn nur die Hälfte der Dateien verschwunden sind.

    Mehr habe ich aus der Frage nicht gelesen, d.h. Ich lese das so, daß Bilder in ein anderes Verzeichnis verschoben werden sollen, egal ob diese schon verhanden sind.


    Beim benutzen von "photorec" werden alle Files, die "gerettet" werden ;) unter Unterschiedlichen Namen abgelegt, also Niemals (denke Ich) überschrieben.


    Ich habe das Bisher nicht gemacht, bei "mv" kann noch, das "-i" Flag hinzufügen, dann wird zum Überschreiben eine Bestätigung erwartet.

  • Ich würde neue Dateinamen erzeugen, in denen die alte Ordnerstruktur im Dateinamen erhalten bleibt. Die neuen Namen lassen dann auch eine nachträgliche Rückordnung zu. Ach ja: find kann mit Regex umgehen:

    Code
    find "$WorkDir" -type f -iregex ".*\(jpg\|jpeg\)$" -print0 | while read -d '' file; do NewName="$DestDir${file//\//|}"; [ -e "$NewName" ] || mv -v "$file" "$NewName"; done

    Für den Inhalt des Beitrages 58738 haftet ausdrücklich der jeweilige Autor: Easy