Shellscript: Verzeichnisstruktur kopieren
Alex
- programmiertechnik
0 jobo0 Alex
0 Alex1 Jens Holzkämper1 Alex
Schönen guten Tag,
ich möchte Dateien und Verzeichnisse aus dem Verzeichnis $SRC_DIR in das Verzeichnis $DEST_DIR kopieren. Dabei sollen versteckte Verzeichnisse (also die, die mit "." beginnen) ausgelassen werden. Momentan mache ich das folgendermaßen:
#!/bin/bash
...
for FILENAME in `find $SRC_DIR -mindepth 1 -type d -wholename "*/.*" -prune -o -printf "%P\n"`
do
if [ -d "$SRC_DIR/$FILENAME" ]
then
mkdir "$DEST_DIR/$FILENAME"
fi
cp "$SRC_DIR/$FILENAME" "$DEST_DIR/$FILENAME"
done
Allerdings kommt mir das sehr umständlich vor. Geht das auch kürzer, eleganter, schöner, schneller, ...?
Grüße
Alex
Hallo,
Schönen guten Tag,
ich möchte Dateien und Verzeichnisse aus dem Verzeichnis $SRC_DIR in das Verzeichnis $DEST_DIR kopieren. Dabei sollen versteckte Verzeichnisse (also die, die mit "." beginnen) ausgelassen werden.
geht nicht cp -R *.*? Oder nimmt er dann die mit dem . mit. Da gibts bei cp vielleicht noch eine Option, versteckte Dateien nicht zu kopieren?
Gruß
jobo
Schönen guten Tag,
ich möchte Dateien und Verzeichnisse aus dem Verzeichnis $SRC_DIR in das Verzeichnis $DEST_DIR kopieren. Dabei sollen versteckte Verzeichnisse (also die, die mit "." beginnen) ausgelassen werden.
geht nicht cp -R *.*? Oder nimmt er dann die mit dem . mit.
Ja, dabei werden die Einträge mit "." am Anfang ebenfalls kopiert.
Da gibts bei cp vielleicht noch eine Option, versteckte Dateien nicht zu kopieren?
Ich hab zumindest keine gefunden. Außerdem möchte ich ja auch nur die versteckten _Verzeichnisse_ überspringen. Sowas wie ".htaccess" soll kopiert werden, wenn's eine Datei ist.
Desweiteren möchte ich die Einträge aus $SRC_DIR schon am liebsten einzeln einsortieren, anstatt z.B. das ganze Verzeichnis zu kopieren und hinterher die ungewollten Einträge aus $DEST_DIR zu löschen. Falls $DEST_DIR schon Einträge enthält, sollen die nämlich erhalten bleiben.
Grüße
Alex
Hoppla! Die Schleife sollte natürlich das hier machen:
do
if [ -d "$SRC_DIR/$FILENAME" ]
then
mkdir "$DEST_DIR/$FILENAME"
else
cp "$SRC_DIR/$FILENAME" "$DEST_DIR/$FILENAME"
fi
done
Grüße
Alex
Tach,
Allerdings kommt mir das sehr umständlich vor. Geht das auch kürzer, eleganter, schöner, schneller, ...?
mit rsync (ungetestet), auch wenn das intern vermutlich wieder ähnlich aussehen wird:
rsync --exclude='.*' $SRC_DIR $DEST_DIR
mfg
Woodfighter
Schönen guten Tag,
rsync --exclude='.*' $SRC_DIR $DEST_DIR
das find ich ganz gut. Schön übersichtlich, auch wenn dafür rsync verfügbar sein muß. :-) Bleibt nur das Problem, daß hier sowohl versteckte Verzeichnisse als auch Dateien erfaßt werden. Um's, wie gewünscht, auf die Verzeichnisse zu beschränken, reichte ein zusätzlicher Slash am Ende des Exclude-Patterns.
Vielen Dank!
Alex