Verzeichnis + Dateien kopieren

O

onlineuser

Mitglied
Hi,

es ist ja kein Problem ganze Unterverzeichnisse mit all den darin enthaltenen Dateien und weiteren Unterverzeichnissen zu kopieren. Jedoch, wenn man genau dasselbe braucht, jedoch nur *.txt-Dateien kopieren möchte - wie kann man das realisieren? rsync ist aber tabu; Kann man es mit cp realisieren oder muss man zusätzlich über alle Dateien iterieren und dann einzeln in der Schleife kopieren!?

Bsp. einer Verzeichnisstruktur:

test
....|---sub_1
...........|-----sub_2
......................|------1.txt
...........|-----sub_3
...........|-----2.txt

ausgeführt wird der Kopierbefehl vom test-Verzeichnis aus.

Liebe Grüsse.
 
Zuletzt bearbeitet:
Code:
find ./ -name \*.txt -exec cp $i <prefix>/$(dirname $i)/ \;
Wobei <prefix> das root-Verzeichnis Deines Zielbaumes ist.
 
Hi,

gute Lösung, aber das Kommando legt mir nicht die Unterverzeichnisse an. Kann man da noch ein mkdir einbauen, damit die selbe Verzeichnisstruktur entsteht wie im originalen Ordner?

Liebe Grüsse.
 
Hallo

Dann musst du eben mal ein wenig basteln und dir auch mal man mkdir ansehen Option -p inclusive man dirname.
etwa so
Code:
PREFIX='/tmp'; #dein Prefix
find /home/wolle/daten/ -type f -iname "*txt" -printf "%p\n"|
while read P; 
do 
  D=$(dirname $P); 
     if [ -d "$PREFIX$D" ];
    then 
     echo "$PREFIX$D" existiert;
     ##hier dein cp;
    else 
    echo $PREFIX$D wird erstellt;
    mkdir -p "$PREFIX$D";
    ##hier dein cp
    fi ;
done
Den Rest bekommst du alleine hin.
siehe auch man find Action -printf
Aber warum nicht rsync?
Warum das Rad nochmal erfinden?

Gruß Wolfgang
 
Hi,

habs jetzt mit einer For-Schleife gemacht, find iteriert über alle .cs Files, mkdir legt die selbe Verzeichnisstruktur an (dirname und basename) und dann kopiert cp die Dateien rein.

rsync darf laut Angabe nicht verwendet werden. Wäre dann zu einfach. :)

Liebe Grüsse.
 
Hi,

habs jetzt mit einer For-Schleife gemacht, find iteriert über alle .cs Files, mkdir legt die selbe Verzeichnisstruktur an (dirname und basename) und dann kopiert cp die Dateien rein.

rsync darf laut Angabe nicht verwendet werden. Wäre dann zu einfach. :)

Liebe Grüsse.

Ups...
Hausaufgaben?
:oldman

Naja, etwas anderes macht mein Schnipsel ja auch nicht.
Nur werden bei mir nur die Pfade angelegt, die gebraucht werden (nur wo es solch eine Datei gibt). Dadurch gibt es anschließend kein leeres Verzeichnis.

Gruß Wolfgang
 

Ähnliche Themen

Keine grafische Oberfläche (Debian Installation)

Alle Dateien eines Verzeichnisses mit einer anderen Datei vergleichen

Kopieren von Dateien per Shell

Löschroutine mit Überprüfung

rsync: Quelle größer als Ziel => "Archiv" aufteilen/splitten

Zurück
Oben