neuemedienbecker
Goto Top

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;

Content-Key: 558021

Url: https://administrator.de/contentid/558021

Printed on: April 24, 2024 at 19:04 o'clock

Member: aqui
aqui Mar 15, 2020 updated at 15:22:20 (UTC)
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 !)
Mitglied: 143127
143127 Mar 15, 2020, updated at Mar 18, 2020 at 20:33:26 (UTC)
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  
Member: NeueMedienBecker
NeueMedienBecker Mar 15, 2020 at 15:27:01 (UTC)
Goto Top
Danke, hab ich verschoben und System noch dazu geschrieben
Member: NeueMedienBecker
NeueMedienBecker Mar 18, 2020 at 17:36:30 (UTC)
Goto Top
Leider scheint es nicht zu Funktionieren
Mitglied: 143127
143127 Mar 18, 2020 updated at 20:31:51 (UTC)
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*!
Member: NeueMedienBecker
NeueMedienBecker Mar 19, 2020 at 07:59:31 (UTC)
Goto Top
Ja, manchmal trifft mich der Spachlosvierus.


Ich habe deine Zeilen getestet und leider ist nichts passiert.

Aber danke für deine Antwort.
Mitglied: 143127
143127 Mar 19, 2020 updated at 08:59:06 (UTC)
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.