Punkt-Verzeichnisse kopieren
Hallo, ich schaffe es einfach nicht, alle Punkt-Verzeichnisse zu kopieren. cp -R .* /ziel und cp -R \.* /ziel kopieren leider sehr viel mehr, ebenfalls find . -name ".*" -type d -maxdepth 1 | cp -R * /dvd und find . -name ".*" -type d -maxdepth 1 | xargs cp -R * /dvd Dagegen behauptet cp -R [\.]* /dvd dass es solche Verzeichnisse gar nicht gibt. Hintergrund fuer meinen Wunsch: Ich moechte alle Punkt-Dateien und Punkt-Verzeichnisse (einschliesslich ihrer Unterverzeichnisse) auf dvdram backupen. Ganz toll waere es, wenn ausgewaehlte Punkt-Verzeichnisse ausausgenommen werden koennten. Dass es prinzipiell geht, weiss ich. Die Frage ist nur, wie? Beste Gruesse, Heinz. -- Reiseberichte aus Mittel- und Osteuropa: http://www.pahlke-online.de Barrierefreies Webdesign: http://www.Pahlke-KunstWebDesign.de
Hallo, ich sehe einen Tippfehler und zwar
cp -R \.* /ziel ^^^ <-- hier! Das "\"-Zeichen gehört nicht zu Linux, sondern zu DOS.
Ich selbst habe mit cp -r .* /ziel probiert und es hat geklappt... Übrigens, hast Du bemerkt, dass die kopierten Verzeichnisse nicht mit "ls -l /ziel" zu sehen sind (das ich doch der Sinn von .-Dateien!!). Probier's mal mit "ls -la /ziel"... Gruss Kimmo
Am Mittwoch, 4. Mai 2005 10:52 schrieb Heinz W. Pahlke:
Hallo,
ich schaffe es einfach nicht, alle Punkt-Verzeichnisse zu kopieren.
cp -R .* /ziel und
cp -R \.* /ziel
kopieren leider sehr viel mehr, ebenfalls
find . -name ".*" -type d -maxdepth 1 | cp -R * /dvd
und
find . -name ".*" -type d -maxdepth 1 | xargs cp -R * /dvd
ich vermute, das Problem ist, dass dabei wohl auch das drüberliegende Verzeichnis mitgenommen wird (wegen '..')
Dagegen behauptet
cp -R [\.]* /dvd
dass es solche Verzeichnisse gar nicht gibt.
idee: wir wollen die Dateien/Verzeichnisse, mit einem Punkt und an 2. Stelle keinen Punkt: cp -R \.[^\.]* ziel dabei werden allerdings auch die _nciht_ ".*-Dateien" aus den unterverzeichnissen mitkopiert, wenn das gewünscht ist, ok, wenn nicht, dann musst Du dir ein Script basteln, dass rekursiv den Baum durchgeht und nur die ".*-Dateien" und ".*-Verzeichnisse" entsprechend kopiert. Gruß Andreas
Hallo, On 04-May-2005 Andreas Loesch wrote:
ich vermute, das Problem ist, dass dabei wohl auch das drüberliegende Verzeichnis mitgenommen wird (wegen '..') [...] idee: wir wollen die Dateien/Verzeichnisse, mit einem Punkt und an 2. Stelle keinen Punkt:
cp -R \.[^\.]* ziel
Oder cp -R \.[a-zA-Z0-9]* ziel So einfach koennen Loesungen sein. Aber an .. habe ich gar nicht gedacht :-(
dabei werden allerdings auch die _nciht_ ".*-Dateien" aus den unterverzeichnissen mitkopiert, wenn das gewünscht ist, ok, wenn
Da das Ziel ein Backup ist, ist das natuerlich nicht nur gewuenscht, sondern notwendig. Vielen Dank, Heinz. -- Reiseberichte aus Mittel- und Osteuropa: http://www.pahlke-online.de Barrierefreies Webdesign: http://www.Pahlke-KunstWebDesign.de
idee: wir wollen die Dateien/Verzeichnisse, mit einem Punkt und an 2. Stelle keinen Punkt:
cp -R \.[^\.]* ziel
Oder cp -R \.[a-zA-Z0-9]* ziel
Was nicht mehr alle Dateien erfaßt, z.B. solche nicht, die ein Minuszeichen oder Unterstrich oder Umlaut als zweites Zeichen haben.
So einfach koennen Loesungen sein. Aber an .. habe ich gar nicht gedacht :-(
dabei werden allerdings auch die _nciht_ ".*-Dateien" aus den unterverzeichnissen mitkopiert, wenn das gewünscht ist, ok, wenn
Puuuh - ehrlich gesagt, wie soll das funktionieren? Was soll es bewirken, den Punkten einen Backslash voranzustellen? Ein Punkt hat kein spezielle Bedeutung auf der Shell, deshalb braucht man auch keinen Backslash o.ä.. Und warum sollte es auch die nicht Punktdateien mitkopieren? . oder \. bedeutet, daß die Dateien mit '.' beginnen sollen, und .[^.] bedeutet, daß sie als zweites Zeichen irgendwas haben, was aber kein Punkt ist. Also fällt '.' als aktuelles Verzeichnis auch weg. Sinnvoller wäre es, wenn man schreibt: cp -r . /irgendwo das kopiert das gesamte Verzeichnis irgendwo hin... Grüße, Thomas Mack
Hallo Heinz, hallo Leute, Am Mittwoch, 4. Mai 2005 10:52 schrieb Heinz W. Pahlke:
ich schaffe es einfach nicht, alle Punkt-Verzeichnisse zu kopieren.
cp -R .* /ziel und
cp -R \.* /ziel
kopieren leider sehr viel mehr, ebenfalls [...] Hintergrund fuer meinen Wunsch: Ich moechte alle Punkt-Dateien und Punkt-Verzeichnisse (einschliesslich ihrer Unterverzeichnisse) auf dvdram backupen.
Der Weg mit .[^.]* wurde Dir ja schon genannt (dabei sind übrigens _keine_ Backslashes nötig! Der Haken dabei: Wenn ein Dateiname mit .. beginnt (also ".irgendwas"), wird er ebenfalls ausgeschlossen. Die Ideallösung dürfte sein (bash-spezifisch): GLOBIGNORE=..:. echo .* Zu GLOBIGNORE siehe man bash ;-)
Ganz toll waere es, wenn ausgewaehlte Punkt-Verzeichnisse ausausgenommen werden koennten.
Mit entsprechender Erweiterung von GLOBIGNORE geht sogar das ;-) GLOBIGNORE=..:.:.nobackup ignoriert z. B. ".nobackup". Gruß Christian Boltz -- Was habt Ihr denn? emacs ist doch ein tolles Betriebssystem! Das einzige was ihm fehlt, ist ein vernünftiger Editor (vim?) [Jan Trippler in suse-linux]
Hallo nochmals, hier ein Skript (copydot) von mir, mit dem die .-Verzeichnisse rekursiv kopiert werden können. Hoffentliche kannst Du damit was anfangen. =================================================== #!/bin/bash # copydot, (c) Kimmo Elo 2005 # Kopiert rekursiv alle .-Verzeichnisse des aktuellen Verzeichnisses # Syntax: copydot ZIEL # if [ $# == 0 ] then echo -e "Syntax: $0 ZIEL\n" exit 1 fi # Zielverzeichnis TARGET=$1 if !( [ -d $TARGET ] ) then echo -e "Zielverzeichnis existiert nicht!\n" exit 1 fi echo -e "Verzeichnisse werden kopiert:" for file in .[^.]* do if [ -d $file ] && [ $file != "." ] then echo -e "Kopiere: $file -> $TARGET/$file ... \c" if !( cp -r $file $TARGET ) then echo -e "FEHLER!" exit 2 fi echo -e "OK." fi done # Alles sauber durch, exit_status=0 exit 0 ===================================================
Ganz toll waere es, wenn ausgewaehlte Punkt-Verzeichnisse ausausgenommen werden koennten.
Das Skript lässt sich ja weiterentwickeln (Optionen etc.)... :-) Gruss Kimmo
participants (6)
-
Andreas Loesch
-
Christian Boltz
-
Heinz W. Pahlke
-
Kimmo Elo
-
Peter Wiersig
-
Thomas Mack