bash script überprüfen

lordg2009

Lt. Commander
Registriert
Apr. 2009
Beiträge
1.503
Hi,

ich habe in einem verzeichnis ganz viele Unterordner. Alle Dateien aus den Unterordnern sollen in das Hauptverzeichnis verschoben werden und die anschließend leeren Unterordner gelöscht werden. Da ich nicht möchte, dass ein falsches bash Script mir alle meine Dateien lösch, umbenennt, oder sonst irgendwas dummes macht, hatte ich gehofft, ihr würdet einen kurzen Blick darüber werfen.

Code:
#!/bin/bash

input="$@"

if [ ! -d $input ]
then
	echo Kein gültiges Verzeichnis angegeben
	exit 1
fi

cd $input
for verzeichnis in *
do
	if [ ! -d "$verzeichnis" ]
	then
		continue
	fi
	mv ${verzeichnis}/* ./
	rmdir ${verzeichnis}
done

Alles in Ordnung?

Vielen Dank für eure Hilfe
 
mach doch statt rm/mv einfach ein echo...

dann siehst du die Filenames die betroffen wären.
 
lordg2009 schrieb:
ich habe in einem verzeichnis ganz viele Unterordner. Alle Dateien aus den Unterordnern sollen in das Hauptverzeichnis verschoben werden und die anschließend leeren Unterordner gelöscht werden.

$> find Startverzeichnis/ -type f -exec cp {} Zielverzeichnis/ \;
$> rm -rf Zielverzeichnis/


/addendum:

Exakt das, was Du willst, 1: Verschieben, 2. Verzeichnisse löschen:

$> find Startverzeichnis/ -type f -exec mv {} Zielverzeichnis/ \;
$> find Startverzeichnis/ -depth -type d -exec rmdir {} \;
 
Zuletzt bearbeitet:
Vorausgesetzt du bist im richtigen Ordner, sonst musst du natürlich *.* und . noch entsprechend anpassen.
Code:
mv */* .; rmdir * 2>/dev/null
Zu beachten ist, dass das auch verschobene Ordner löscht, falls diese leer sind.
 
Zurück
Oben