Skripter aller Länder

Ich brauche ein Skript, das alle Dateien aus einem Verzeichnis verschieben, die nicht auf .tmp enden.

Ich hab jetzt schon wie ein Blöder herum gemacht, aber bekomme diesen Ausschluss nicht hin. Bislang siehts so aus:

for UNIXFILE in \*; do
 if [fucking-extension != ".tmp"]
 /bin/mv $UNIXFILE /backup
 fi
done

Nicht wirklich viel, oder? Außerdem die kleine Syntaxschwäche…

Ich habe einige Lösungen gefunden (beispielsweise ‚eval substr‘), aber die funktionieren wunderbarerweise nicht unter Standard-Solaris (*AETZEND!*).

Wer kann mir auf die Sprünge helfen - wahrscheinlich ist Regex mein Freund, aber ich bekomme die Syntax nicht hin, und ich finde auch keine passenden beispiele im Netz.

Ich sehe die völlig einfache Lösung geradezu vor mir, aber ich komme einfach nicht drauf :frowning:

Danke,
Stefan

Hallo,

Ich brauche ein Skript, das alle Dateien aus einem Verzeichnis
verschieben, die nicht auf .tmp enden.

for UNIXFILE in *; do
if [fucking-extension != „.tmp“]
/bin/mv $UNIXFILE /backup
fi
done

Nicht wirklich viel, oder? Außerdem die kleine
Syntaxschwäche…

Da gebe ich Dir recht :smile:
Wie wäre es mit

for file in $(ls -1 | grep -v .tmp$)
do
 if [! -d $file]
 then
 /bin/mv $file /backup
 fi
done

Ansonsten schau Dir das ABS an:
http://www.tldp.org/LDP/abs/html/

Gruß
Andreas

for file in $(ls -1 | grep -v .tmp$)

Cool! That separates the boy from the man :smile:

Danke,
Stefan

for file in $(ls -1 | grep -v .tmp$)

Cool! That separates the boy from the man :smile:

.]

Trotzdem:
.tmp$ ist glaube ich nicht ganz sauber
Mag sein, daß das Dollar-Zeichen in manchen Fällen verschluckt wird.

ls -1 | grep -v \.tmp

sollte in den meisten Fällen auch funktionieren und erscheint mir sauberer (auch wenn so Dateien die „.tmp“ innerhalb des Namens enthalten, auch matchen)

Gruß
Andreas

hash bang slash bin slash bash …