Alles ausser einer Datei verschieben

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
HDH
Beiträge: 47
Registriert: 11.04.2003 16:40:36
Wohnort: Schweiz
Kontaktdaten:

Alles ausser einer Datei verschieben

Beitrag von HDH » 07.04.2004 19:01:42

Wie kann ich alle Dateien ausser einer bestimmen verschieben? Mit "mv * bla" kann ich alle verschieben, wie kann ich da jetzt eine bestimme Datei ausschliessen? Also dass er alle ausser diese Dateiverschiebt.
Gewinnen kann jeder,
aber verlieren ist ne echte Kunst!

Benutzeravatar
godsmacker
Beiträge: 902
Registriert: 16.03.2003 21:50:26
Lizenz eigener Beiträge: Artistic Lizenz
Wohnort: Chemnitz
Kontaktdaten:

Beitrag von godsmacker » 07.04.2004 20:00:17

Mit der zsh kann man mit

Code: Alles auswählen

*~(*.gz|*.bz2)
o.ae. Datein ausschliessen.

Code: Alles auswählen

mv *~(datei) foobar
waere also wahrscheinlich das, was Du suchst, nur weiss ich nicht ob das auch andere shells beherrschein.

Was ich ausserdem noch ganz nuetzlich finde ist '^'. Damit kann man zum Beispiel mit

Code: Alles auswählen

ls ^(*.tar|*foo*)
alle Datein auflisten lassen, die nicht auf .tar enden oder foo enthalten.

Gruss,
Florian

Benutzeravatar
feltel
Webmaster
Beiträge: 10476
Registriert: 20.12.2001 13:08:23
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Leipzig, Germany
Kontaktdaten:

Beitrag von feltel » 07.04.2004 20:11:11

Schau mal hier.

HDH
Beiträge: 47
Registriert: 11.04.2003 16:40:36
Wohnort: Schweiz
Kontaktdaten:

Beitrag von HDH » 08.04.2004 10:11:40

Ich benutze die Bash, die möglichkeiten von godsmacker funktionieren nicht.
@ feltel: Bei deinem Link steht zwar, wie man das mit ls macht und das funzt auch aber wie mache ich das jetzt bei mv ?
Gewinnen kann jeder,
aber verlieren ist ne echte Kunst!

roli
Beiträge: 3174
Registriert: 10.09.2003 17:39:58

Beitrag von roli » 08.04.2004 10:29:40

Hi,

das hoert sich nach einer Aufgabe fuer "mmv" (Multiple Move) an.
Roland


"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"

Benutzeravatar
myx
Beiträge: 1091
Registriert: 17.02.2002 21:19:19
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Berlin

Beitrag von myx » 08.04.2004 11:07:11

Hier werden für die bash einige Möglichkeiten beschrieben:
http://www.bestsolution.at/support/cons ... files.html

bezieht sich zwar auf ls, funktioniert aber auch bei mv:

Und zwar können z.B. die sogenannten bashes extended globbing features (shopt -s extglob) eingeschaltet werden, so daß ! verwendet werden kann, Beispiele (alle Dateien, außer mit Endung .pcm nach neu verschieben):

Code: Alles auswählen

shopt -s extglob
 mv *.[!(pcm)] neu/
Dabei werden allerdings Dateien ohne suffix nicht verschoben.

Code: Alles auswählen

mv *[!(pcm)] neu/
verschiebt dann zwar Dateien ohne suffix, aber auch Unterverzeichnisse, die dann auch noch ausgeschlossen werden müssten.

Code: Alles auswählen

 mv *[!(pcm)!(einVerzeichnis)] neu/

ivo
Beiträge: 629
Registriert: 29.04.2002 12:41:22
Wohnort: Lichtenstein/Sa.
Kontaktdaten:

Beitrag von ivo » 08.04.2004 19:02:28

Warum das Ganze nicht mit find erschlagen?

Code: Alles auswählen

find . -type f ! -name dateiname.ext -exec mv {} /tmp \;
*iv

HDH
Beiträge: 47
Registriert: 11.04.2003 16:40:36
Wohnort: Schweiz
Kontaktdaten:

Beitrag von HDH » 08.04.2004 19:27:59

Ok ich habs jetzt mit der Variante von myx gemacht, funzt super :) Danke an alle!
Gewinnen kann jeder,
aber verlieren ist ne echte Kunst!

Antworten