Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Linux Forum Linux-Web.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

26.08.2005, 12:40

Leerzeichen aus Dateinamen entfernen!

Hallo

Mit welchem befehl oder skript kann ich Leerzeichen aus Dateinamen entfernen?Hab jetzt schon ne weile bei google gesucht aber nix brauchbares gefunden!

Beispiel:

Wenn ich eine Datei habe die 1 2 3 4.test heist möchte ich das die nachher 1234.test heißt!

TomH

in keinem Vorstand!

Beiträge: 212

Beruf: Systemadministrator

  • Nachricht senden

2

26.08.2005, 14:38

Innerhalb eines Verzeichnisses (erst mal anzeigen):

ls -1 | while read i; do mv \"$i\" " -- " \"`echo $i | tr -d " "`\"; done


und umbenennen:

ls -1 | while read i; do mv \"$i\" \"`echo $i | tr -d " "`\"; done


es mault zwar rum, tut aber ;-)



Thomas
Every feature is a bug, unless it can be disabled.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »TomH« (26.08.2005, 14:39)


3

26.08.2005, 15:04

Bei mir mault er nur und tut gar nix!
Das is irgendwie nicht die goldene lösung!

TomH

in keinem Vorstand!

Beiträge: 212

Beruf: Systemadministrator

  • Nachricht senden

4

26.08.2005, 15:17

Sch....

das anzeigen war falsch!!! statt "mv" muß da "echo" stehen:

ls -1 | while read i; do echo \"$i\" " -- " \"`echo $i | tr -d " "`\"; done

ich hoffe, es hat jetzt nichts erlegt/gelöscht?

Das umbenennen hat bei mir geklappt, ich schaue es mir trotzdem nochmal an.

Update, die "\" waren beim mv zuviel, korrekt ist:

ls -1 | while read i; do mv "$i" "`echo $i | tr -d " "`"; done



Tom
Every feature is a bug, unless it can be disabled.

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »TomH« (26.08.2005, 15:24)


Darts

Up the Irons!

  • »Darts« ist männlich

Beiträge: 614

Wohnort: Braunschweig

Beruf: Schüler

  • Nachricht senden

5

26.08.2005, 15:19

datei="1 2 3 4.sh"
rename $datei `echo $datei | sed -e 's/ //g'`

Hoffe es hilft

//EDIT: zu spät :D
You are registered Linux user #393303.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Darts« (26.08.2005, 15:20)


6

26.08.2005, 15:34

Vielleicht mach ich irgendwas falsch!
Das funktioniert alles nicht!

Bei dem versuch mit rename sagt er mir immer:

rename: Konnte HALLO.txt nicht in AALLO.txt umbenennen: Datei oder Verzeichnis nicht gefunden

hatte mir das skript gebaut:

#!/bin/sh

ls=$(ls *.txt)
echo $ls
rename $ls `echo $ls | sed -e 's/ //g'`

Die test datei die ich erstellt hatte heißt: H A L L O.txt


@TomH : Das anzeigen geht jetzt aber das umbennen haut nicht hin, da macht er fehler! Kann datei oder verzeichniss nicht finden!!!

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »keinerrr« (26.08.2005, 15:38)


Darts

Up the Irons!

  • »Darts« ist männlich

Beiträge: 614

Wohnort: Braunschweig

Beruf: Schüler

  • Nachricht senden

7

26.08.2005, 15:38

Versuch ma

mv $ls `echo $ls | sed -e 's/ //g'`

Ich bin auch blöd... :D

rename " " "" *.txt
würde das erste leerzeichen aus dem Namen entfernen.
You are registered Linux user #393303.

TomH

in keinem Vorstand!

Beiträge: 212

Beruf: Systemadministrator

  • Nachricht senden

8

26.08.2005, 15:40

Das macht es! Erprobt! Versprochen! ;-)

Aber Achtung, rekursiv, d.h. in allen Unterverzeichnissen!!!


#!/bin/sh
# entfernen von Leerzeichen aus Dateinamen
# rekursiv !!!

find . | while read old; do
new=`echo $old | tr " " "_"`
if [ "$new" != "$old" ]; then
echo $old " => " $new
mv "$old" "$new"
fi
done

wenn das nicht gewünscht ist, "find ." durch "ls -1" ersetzen.

Tom
Every feature is a bug, unless it can be disabled.

9

26.08.2005, 15:51

@TomH:

Das is es fast!

Also das skript funktioniert. Er entfernt zwar nicht die leerzeichen sondern ersetzt sie mit einem _ aber das reicht mir zur not!

Vielen Dank

TomH

in keinem Vorstand!

Beiträge: 212

Beruf: Systemadministrator

  • Nachricht senden

10

26.08.2005, 15:53

uuups, ... ich wollte bei mir "_".

Ersetze das

tr " " "_"

durch

tr -d " "

dann macht es genau das, was Du willst.

btw:
# man tr

*ggg*

Tom
Every feature is a bug, unless it can be disabled.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »TomH« (26.08.2005, 15:55)


11

26.08.2005, 15:57

Perfekt das läuft!

btw: tr kenn ich nicht, deshalb war ich auch nicht auf die idee gekommen das damit zu machen!
Mit sed hab ich mich schon beschäftigt aber ich hab mein problem damit nicht lösen können!
Aber egal

Jetzt läuft alles genau so wie ich mir das vorstelle!
Nochmals Danke!

TomH

in keinem Vorstand!

Beiträge: 212

Beruf: Systemadministrator

  • Nachricht senden

12

26.08.2005, 16:02

sed -e 's/ //g'

macht dasselbe wie

tr -d " "


Tom
Every feature is a bug, unless it can be disabled.

Darts

Up the Irons!

  • »Darts« ist männlich

Beiträge: 614

Wohnort: Braunschweig

Beruf: Schüler

  • Nachricht senden

13

26.08.2005, 16:03

Super, wieder was dazu gelernt! :) Habe mal ein cgi-Guestbook geschrieben, und den ganzen Kram aus dem QUERY_STRING zu erstzen war mit sed schon ziemlich lästig. ^^
You are registered Linux user #393303.

Talon_Karrde

Fortgeschrittener

  • »Talon_Karrde« ist männlich

Beiträge: 197

Wohnort: Deutschland/NRW/Moers

Beruf: Netzwerk Ingenieur

  • Nachricht senden

14

26.08.2005, 16:07

Fertiges Proggi gib es hier:
http://sourceforge.net/projects/detox/

Aber selbst gemacht ist doch schöner!!! :+++:

Gruß
Werner
_______________________________________________________________
Everything that is really great and inspiring is created by the individual
who can labor in freedom.

- Albert Einstein

Thema bewerten