BASH: Dateien aus SVN Repository mit find + cp kopieren

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
mix
Beiträge: 17
Registriert: 20.04.2005 12:40:40

BASH: Dateien aus SVN Repository mit find + cp kopieren

Beitrag von mix » 17.03.2006 14:37:13

hi leute,

wollte mir heute nen kleines bashscript machen, welches mir die dateien aus dem ordner ~/dev/trunk in den ordner ~/hsdev kopiert, mit ein paar Einschränkungen:
- Ordner install und seine Dateien sollen nicht kopiert werden
- datei lib/config.inc.php soll nicht kopiert werden
- Ordner files und seine Dateien sollen nicht kopiert werden
- Alle Ordner mit dem Namen .svn und deren Inhalte sollen nicht kopiert werden.

Nun habe ich folgende Probleme:
- die Regel mit dem .svn nicht kopieren funktioniert überhaupt nicht
- der Inhalt des ordners lang/ wird nicht in ~/hsdev/lang sondern in ~/hsdev/ abgelegt..

mein script:

Code: Alles auswählen

#!/bin/sh
find dev/trunk \
  -not -regex ".*/install" \
  -not -regex ".*/lib/config.inc.php.*" \
  -not -regex ".*/files.*" \
  -not -regex ".*/\.svn/.*" \
  -exec cp -Ruv --target-directory=hsdev/ \{\} \;
Weiss jemand weiter? :/
gruss
mix

Benutzeravatar
seep
Beiträge: 544
Registriert: 31.10.2004 14:21:08
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: HSK

Beitrag von seep » 17.03.2006 17:11:34

Ich würde anders vorgehen:

1. Alle Dateien (type -f) aus /dev/trunk finden und wegschreiben
2. Aus dieser Liste alles entfernen, was man nicht sichern möchte (grep -v)
3. Alle übriggebliebenen Dateien temporär tar-en (tar -T foo.list)
4. in hsdev/ wieder auspacken

Mit ein paar geschickten Pipes müßte das auch alles in einem Bash-Einzeiler maximal Bash-zweizeiler klappen.

Probleme bei Deinem find: Du übergibst dem cp alles, was find findet, und der find findet auch neben Verzeichnissen auch Dateien. Die Dateien wird er platt nach hsdev/ kopieren.

mix
Beiträge: 17
Registriert: 20.04.2005 12:40:40

Beitrag von mix » 17.03.2006 17:26:22

Hm okay, das wär auch ne möglichkeit.. thx :)

Antworten