hudson
Goto Top

Nur Verzeichnisstruktur kopieren und eine Datei?

Hi,

für viele von Euch wahrscheinlich was recht einfaches:

Ich möchte ab einem bestimmten Verzeichnis nur alle Unterverzeichnisse und nur ein file aus den jeweiligen verzeichnissen an eine andere stelle kopieren. welches file ist egal.

also zb.:

\export\home\testdir beinhaltet:
-dir1
-dir1a
-file1
-file2
-dir2
-file1
-file2
-file3

soll so nach dem cp job aussehen:
\export\home\testdir2
-dir1
-dir1a
-file1
-dir2
-file1


hoffe es ist verständlich...
Kann jemand helfen? evtl. ein kleines shell skript?

Danke
hudson

Content-Key: 33507

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

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

Member: Tundra
Tundra Jun 02, 2006 at 09:33:27 (UTC)
Goto Top
Hallo Hudson,

möchtest Du alle Ordner (A) unterhalb von testdir haben, oder auch die dazugehörigen Unterordner (B)?

A)
- Dir1
- Dir2

B)
- Dir1\Dir1a
- Dir2\Dir2a\Dir2b

Grüße
Guido
Member: Tundra
Tundra Jun 02, 2006 at 10:29:10 (UTC)
Goto Top
'Ordnerstruktur kopieren  
'02.06.06/ge  

option explicit

const C_Quelle = "c:\temp"  
const C_Ziel = "c:\x"  

DIM O_FSO

Set O_FSO = CreateObject("Scripting.FileSystemObject")  

call S_ReadDir(C_Quelle)

'#############  
'Ordnerstruktur einlesen  
sub S_ReadDir(P_Quelle)
    DIM O_Dir
    DIM O_SubDir
    
    Set O_Dir = O_FSO.GetFolder(P_Quelle)
    for each O_SubDir in O_Dir.subfolders
        call S_WriteDir(right(O_SubDir.Path,LEN(O_SubDir.Path)-LEN(C_Quelle)))
        'Aktivieren, falls Unterverzeichnisse auch angelegt werden sollen'  
        S_ReadDir O_SubDir
        call S_WriteFile(right(O_SubDir.Path,LEN(O_SubDir.Path)-LEN(C_Quelle)))
    next
end sub

'Schreibe Ordnerstruktur'  
sub S_WriteDir(P_Ziel)
    on error resume next
    O_FSO.CreateFolder C_Ziel & P_Ziel
    on error goto 0
end sub

'Kopiere Datei'  
sub S_WriteFile(P_Ziel)
    DIM O_Datei
    DIM O_Dir
    DIM L_Quelle
    DIM L_Ziel
    L_Quelle = C_Quelle & P_Ziel
    L_Ziel = C_Ziel & P_Ziel & "\"  
    set O_Dir = O_FSO.GetFolder(L_Quelle)
    for each O_Datei in O_Dir.Files
        O_FSO.CopyFile O_Datei.Path,L_Ziel
        exit for
    Next
end sub

Grüße Guido
www.code-master.de
Member: hudson
hudson Jun 02, 2006 at 11:12:41 (UTC)
Goto Top
sorry die tabs wurden hier eingerückt... ich machs mal so...

testdirquelle:
-dir1
---dir1a
file1
file2
-dir2
---file1
---file2
---file3


testdirziel
-dir1
---dir1a
---file1
-dir2
---file1

hm hast du das in visual basic gemacht? bräuchte eher nen copy job für unix... oder ein shellscript.
Member: Tundra
Tundra Jun 02, 2006 at 12:34:07 (UTC)
Goto Top
Hi,

das ist VBScript.
Für Linux/Unix wirst Du wohl auf perl oder eine bash-Sprache zurückgreifen müssen.

Grüße
Guido
Mitglied: 7704
7704 Jun 06, 2006 at 12:56:37 (UTC)
Goto Top
Es ist noch nicht ganz das, was du suchst, aber immerhin einen Anfang:

 
find /home/testuser/testquelle -type d -exec cp {} -r . \; 

Gruss
pame