Re: Leerzeichen/Dateinamen in Shellscripts

From: Philon <philon(at)macnews.de>
Date: Fri, 02 Aug 2002 13:26:56 +0200

> Das ist schonmal schlecht. Die Ausgabe von ls läßt sich
> nicht verläßlich parsen, höchstens, wenn Du die Option -B
> verwendest, aber das wird eher ziemlich aufwendig.

mein ls hat keine -B Option.

> Du solltest bedenken, daß es nur zwei Zeichen gibt, die
> unter UNIX ich Dateinamen nicht vorkommen können: der
> Schrägstrich und Nullbytes. Alles andere ist erlaubt,
> z.B. auch Newlines, Backspaces, Escapes etc. Da sind
> Spaces und Tabs eher noch das geringere Übel.

Die Dateien werden von Clients mit Windows und Mac OS erstellt. Da
reduziert sich die Liste um ein gutes Stück. Und nach meinem letzten
Test gab nichts weiter besonderes als das Leerzeichen vor. Grössere
Dinge sollten also von vornherein garnicht auftreten.

> Du solltest Dir einen anderen Weg überlegen, die Datei
> liste zu erstellen. Es gibt da eine ganze Reihe von Mög-
> lichkeiten. Was sich am ehesten anbietet, hängt davon ab,
> was Du überhaupt machen willst, bzw. woher die Dateinamen
> überhaupt kommen, oder nach welchen Kriterien sie ermittelt
> werden sollen.

Ich mach ja bis jetzt nur Basics mit shellscripts, um das übliche hier
und da zu automatisieren. Bisher hatte ich da mit ls in eine Datei zum
wieder ausgreppen und nachbearbeiten mit awk und sed eigentlich weder
die Möglichkeiten (Regular Expressions) ausgeschöpft noch die Grenzen
erreicht. Ich kam nur über Leerzeichen nicht hinweg.

Wie ließen sich denn sonst noch Dateiexistenzen/Ordnerinhalte für ein
Skript herausfinden?

> Wenn Du ein paar mehr Details verrätst, könnte ich evtl.
> auch konkretere Empfehlungen geben, anstatt ins Blaue zu
> raten. ;-)

hab ja jetzt schon einiges mehr verraten... aber vielleicht tuts ja
zusätzlich noch die Projektaufgabe:

Wir haben Fileserver-Volume der Daten vom Raid runterkopiert auf ne
andere Platte damit ein anderer Rechner von den Daten ein Backup machen
kann, ohne das an den Daten geändert wird. Letzteres machte immer
wieder Probleme. Nunja, mit rsync wärs eigentlich am besten, das hatte
aber nicht geklappt, da bin ich auf ditto gekommen.

Im Endeffekt ists so.
- Schau ins Serververzeichnis nach Dateien
- Kopiere alle aktuellen Arbeitsordner rüber auf die andere Platte
- Lass die Dateien mit ~ oder Leerzeichen am Anfang des Dateinamens aus
(weshalb ein cp des ganzen Ordners z.B. nicht geht)

Da die Arbeitsordner sich ja immer wieder verändern und andere
Bezeichnungen bekommen, alte rausfliegen/neue reinfliegen usw. musste
ich halt eine Liste generieren, die ich dann auch gleich um die
Ausschlussordner/dateien reduzieren kann.

Soweit!

philon

To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Fri 02 Aug 2002 - 13:27:30 CEST

search this site