neuemedienbecker

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.

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;
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

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

aqui
aqui 15.03.2020 aktualisiert um 16:22:20 Uhr
Goto Top
Ist doch hier eher falsch sondern was für die Rubrik "Batch & Shell" wo es auch die entsprechenden Shell Gurus lesen ?!
Hilfreich wäre zudem auch noch wenn du der Hilfs Community verräts welche Shell du nutzt. Bei Linux gibts da ja bekanntlich mehrere ?!
(Tip: Kannst du selber verschieben !)
143127
143127 15.03.2020, aktualisiert am 18.03.2020 um 21:33:26 Uhr
Goto Top
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
 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  
NeueMedienBecker
NeueMedienBecker 15.03.2020 um 16:27:01 Uhr
Goto Top
Danke, hab ich verschoben und System noch dazu geschrieben
NeueMedienBecker
NeueMedienBecker 18.03.2020 um 18:36:30 Uhr
Goto Top
Leider scheint es nicht zu Funktionieren
143127
143127 18.03.2020 aktualisiert um 21:31:51 Uhr
Goto Top
Zitat von @NeueMedienBecker:

Leider scheint es nicht zu Funktionieren
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*!
NeueMedienBecker
NeueMedienBecker 19.03.2020 um 08:59:31 Uhr
Goto Top
Ja, manchmal trifft mich der Spachlosvierus.


Ich habe deine Zeilen getestet und leider ist nichts passiert.

Aber danke für deine Antwort.
143127
143127 19.03.2020 aktualisiert um 09:59:06 Uhr
Goto Top
Zitat von @NeueMedienBecker:
Ich habe deine Zeilen getestet und leider ist nichts passiert.
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.