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
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
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:
oder
Im Beispiel wird das Verzeichnis newdir angelegt, welches ein Verzeichnis newsub enthält:
Wobei ein:
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.
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:
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
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:
./08/16/DSCF0183.JPG
./08/16/DSCF0184.JPG
./08/16/DSCF0188.JPG
./08/16/DSCF0182.JPG
./08/16/DSCF0185.JPG
./08/16/DSCF0187.JPG
./08/16/DSCF0186.JPG
./05/19/DSCF0178.JPG
./05/19/DSCF0177.JPG
./05/19/DSCF0180.JPG
./05/19/DSCF0175.JPG
./05/19/DSCF0176.JPG
./05/19/DSCF0179.JPG
./05/10/DSCF0173.JPG
./05/10/DSCF0172.JPG
./05/10/DSCF0174.JPG
./05/09/DSCF0170.JPG
./05/09/DSCF0169.JPG
./05/09/DSCF0171.JPG
Alles anzeigen
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
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
=====================================================
#!/bin/sh
WorkDir=$(pwd)
move="no"
if [ $# -eq 1 ]
then
DestDir=$1
else
DestDir="/video/trash"
fi
echo "Move Media from $WorkDir to $DestDir "
read -e -i "$move" -p " (yes/no default = no): " move
if [ $move == "yes" ]; then
if [ -d "$DestDir" ]; then
echo "destination folder already exist"
else
mkdir $DestDir
echo "created $Destdir folder"
fi
find $WorkDir -iname '*.jpg' -exec mv '{}' $DestDir ';'
find $WorkDir -iname '*.jpeg' -exec mv '{}' $DestDir ';'
find $WorkDir -iname '*.gif' -exec mv '{}' $DestDir ';'
find $WorkDir -iname '*.png' -exec mv '{}' $DestDir ';'
find $WorkDir -iname '*.avi' -exec mv '{}' $DestDir ';'
find $WorkDir -iname '*.flv' -exec mv '{}' $DestDir ';'
find $WorkDir -iname '*.mkv' -exec mv '{}' $DestDir ';'
find $WorkDir -iname '*.mp4' -exec mv '{}' $DestDir ';'
find $WorkDir -iname '*.mpg' -exec mv '{}' $DestDir ';'
fi
====================================================
Alles anzeigen
//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
Es reicht ein Befehl:
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)
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.
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.
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: