Linux Ubuntu Dateien aus einem Verzeichnis in eine vorhandene Verzeichnisstruktur verschieben
Hallo,
ich haben sehr viele Bilddateien in einem Verzeichnis eine Verzeichnisstruktur wo die gleichen Datei mit gleichen Dateinamen drin sind
Verzeichnis mit den Bildern /tmp/ Bilder_alle
Verzeichnis mit den vorhanden Bilder /tmp/Bilder_klein/...
Verzeichnis ohne Bilder /tmp/Bilder_groß/.....
Jetzt soll geprüft werden wo das Bild aus dem Verzeichnis /tmp/Bilder_alle im Verzeichnis /tmp/Bilder_klein/... befindet und aus dem Verzeichnis /tmp/ Bilder_alle in das entsprechende Unterverzeichnis /tmp/Bilder_groß/..... verschoben werden.
Problem ist das die Unterverzeichnisse leider auch auch mit leer Zeichen sind z.B.
/tmp/Bilder_klein/12. Test 56/1/tr
/tmp/Bilder_klein/14. Test 55/3/zr
/tmp/Bilder_groß/12. Test 56/1/tr
/tmp/Bilder_groß/4. Test 55/3/zr
Ich habe folgendes Script was aber irgendwie falsch ist.
ich haben sehr viele Bilddateien in einem Verzeichnis eine Verzeichnisstruktur wo die gleichen Datei mit gleichen Dateinamen drin sind
Verzeichnis mit den Bildern /tmp/ Bilder_alle
Verzeichnis mit den vorhanden Bilder /tmp/Bilder_klein/...
Verzeichnis ohne Bilder /tmp/Bilder_groß/.....
Jetzt soll geprüft werden wo das Bild aus dem Verzeichnis /tmp/Bilder_alle im Verzeichnis /tmp/Bilder_klein/... befindet und aus dem Verzeichnis /tmp/ Bilder_alle in das entsprechende Unterverzeichnis /tmp/Bilder_groß/..... verschoben werden.
Problem ist das die Unterverzeichnisse leider auch auch mit leer Zeichen sind z.B.
/tmp/Bilder_klein/12. Test 56/1/tr
/tmp/Bilder_klein/14. Test 55/3/zr
/tmp/Bilder_groß/12. Test 56/1/tr
/tmp/Bilder_groß/4. Test 55/3/zr
Ich habe folgendes Script was aber irgendwie falsch ist.
for datei in $(find /tmp/Bilder_alle -name "*.jpg")
do
delimiter='/'
s=$datei$delimiter
array=();
while [[ $s ]]; do
array+=( "${s%%"$delimiter"*}" );
s=${s#*"$delimiter"};
done;
echo ${array[3]}
for data in $(find /tmp/Bilder_klein -maxdepth 100 -name ${array[3]});
do
echo "old: $datei moved to ${data/tmp/Bilder_groß}";
mv $data ${data/tmp/Bilder_groß};
done;
done;
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 558021
Url: https://administrator.de/forum/linux-ubuntu-dateien-aus-einem-verzeichnis-in-eine-vorhandene-verzeichnisstruktur-verschieben-558021.html
Ausgedruckt am: 30.04.2025 um 20:04 Uhr
7 Kommentare
Neuester Kommentar

Alter Kaffee denn so wie oben sollte man es genau nicht machen ... Hier findest du wasserdichte Lösungen für dieses und noch andere Fallstricke bei Pfaden wie escapes etc.
How to loop through file names returned by find?
Für das oben geschilderte reicht ein Einzeiler
How to loop through file names returned by find?
Für das oben geschilderte reicht ein Einzeiler
find /tmp/Bilder_alle -type f -name *.jpg | while read -r line;do subdir=$(dirname "$line");if [[ -f "/tmp/Bilder_klein${subdir/\/tmp\/Bilder_alle/}/$(basename "$line")" ]];then mv "$line" /tmp/Bilder_groß/ ;fi;done

Lach, dich hat wohl der Sprachlosvirus befallen 🙈🙈, und doch funktioniert hier absolut problemlos auch mit Leerzeichen ...
"Funktioniert nicht" ist übrigens in einem Admin Forum keine Antwort, versteht sich doch von selbst, *Kopfschüttel*!
"Funktioniert nicht" ist übrigens in einem Admin Forum keine Antwort, versteht sich doch von selbst, *Kopfschüttel*!

Dann hast du sie fehlerhaft angepasst, geht hier wie gesagt testweise problemlos, ansonsten hast du den Topic nicht exakt genug erläutert. Vom fehlenden OS mal ganz abgesehen.