# "~" von Dateiendung entfernen



## cIrCa (6. September 2006)

Hallo zusammen

Ich habe folgendes Problem:
mit rsync --delete habe ich monatelang ein falsches Backup gemacht.

Nun haben alle Files am Schluss ein ~.
Zweites Problem: Einige Files haben einen Leerschlag im Dateinamen.

Versucht habe ich es auf folgende Art und Weise:

```
find  -name "*~">>foo.txt
for i in `cat foo.txt`; do mv "$i" "${i/~}"; done
```

Im 'foot.txt' steht nun:

```
[...]
./chat-net.ch/mix/.Cron Daemon/cur/1146636468.M957758P3358V0000000000000306I007AC092_60.phoenix.chat-net.ch,S=897:2,S~
./chat-net.ch/mix/.Cron Daemon/cur/1146723312.M214902P21859V0000000000000306I007AC09B_16.phoenix.chat-net.ch,S=897:2,S~
./chat-net.ch/mix/.Cron Daemon/cur/1146809922.M951768P9502V0000000000000306I007AC08F_14.phoenix.chat-net.ch,S=4209:2,S~
./chat-net.ch/mix/.Cron Daemon/cur/1146809922.M973180P9502V0000000000000306I007AC095_15.phoenix.chat-net.ch,S=897:2,S~
./chat-net.ch/mix/.Cron Daemon/cur/1147163578.M190044P18066V0000000000000306I007AC0A6_87.phoenix.chat-net.ch,S=4246:2,S~
./chat-net.ch/mix/.Cron Daemon/cur/1147163578.M203698P18066V0000000000000306I007AC0A8_89.phoenix.chat-net.ch,S=4245:2,S~
./chat-net.ch/mix/.Cron Daemon/cur/1147163578.M204017P18066V0000000000000306I007AC0AA_91.phoenix.chat-net.ch,S=897:2,S~
[...]
```

Beim Ausführen des Befehls 
	
	
	



```
for i in `cat foo.txt`; do mv "$i" "${i/~}"; done
```
erhalte ich folgende Fehlermeldungen:


```
[...] mv: Aufruf von stat für ,,./chat-net.ch/mix/.Cron" nicht möglich: Datei oder Verzeichnis nicht gefunden
mv: Aufruf von stat für ,,Daemon/cur/1149072550.M67020P29605V0000000000000306I007AC11E_39.phoenix.chat-net.ch,S=897:2,S~" nicht möglich: Datei oder Verzeichnis nicht gefunden
mv: Aufruf von stat für ,,./chat-net.ch/mix/.Cron" nicht möglich: Datei oder Verzeichnis nicht gefunden
mv: Aufruf von stat für ,,Daemon/cur/1149142428.M414526P14364V0000000000000306I007AC124_30.phoenix.chat-net.ch,S=642:2,S~" nicht möglich: Datei oder Verzeichnis nicht gefunden
mv: Aufruf von stat für ,,./chat-net.ch/mix/.Cron" nicht möglich: Datei oder Verzeichnis nicht gefunden
mv: Aufruf von stat für ,,Daemon/cur/1149142428.M445836P14364V0000000000000306I007AC126_32.phoenix.chat-net.ch,S=897:2,S~" nicht möglich: Datei oder Verzeichnis nicht gefunden
[...]
```

Hat jemand eine Lösung für dieses etwas nervige Problem?


----------



## 4men (7. September 2006)

Hi,

hab grad keine Möglichkeit das zu testen, deswegen sag ich dir nur wie's gehen könnte.

Als erstes die for Schleife über alle Einträge. Die Strings drehst du um mit rev. Dann solltest du das letzte Zeichen mit cut wegschneiden können und dann wieder rev. Damit sollte das letzte Zeichen was ja scheinbar immer ~ ist weg sein. Danach kannst du sie wieder reinschreiben bzw. in eine neue Datei damit erzeugen.

Gruß 4men


----------



## deepthroat (7. September 2006)

Hi.

Das Problem sind die Leerzeichen in dem Dateinamen da Bash nach der Kommandoexpansion das Ergebnis an den Trennzeichen in Worte unterteilt.

Am besten machst du das so:
	
	
	



```
cat foo.txt | while read filename; do 
  mv "$filename" "${filename/\~}";
done
```
Gruß


----------

