• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Skript / Kommandozeile gesucht: Leerzeichen gegen _ tauschen

Moin,
ich bin Shell-Beginner, deshalb hier mal die Frage in die Runde:
Ich möchte alle Leerzeichen aus Dateinamen gegen Unterstriche tauschen. Hat jemand zufällig ne Idee mit wie man das macht?
Danke!
 
A

Anonymous

Gast
Da sollte es hier im Forum einiges zu finden geben, da haben wir sogar schon mal einen "Wettbewerb" um dieses Thema veranstaltet.
http://www.linux-club.de/viewtopic.php?t=26005&start=0

robi
 
herzlichen Dank, robi, für die schnelle Antwort. Der fred von 2005 war der SuFu wohl entgangen... Hmmm, das ist starker Toback, das muss ich mir erst mal gaaanz langsam auf der Grosshirnrinde zergehen lassen. Falls es noch Nahcfragen diesbezüglich geben sollte, tauche ich damit dann hier wieder auf... Anyway, danke erstmal!
 
Also, vom Prinzip her würde ich da so rangehen:
Code:
echo "Hallo Welt" | perl -e 'while(<>){$_ =~ s/ /_/g;print "$_"}'
Gruß
 
abgdf schrieb:
Also, vom Prinzip her würde ich da so rangehen:
Code:
echo "Hallo Welt" | perl -e 'while(<>){$_ =~ s/ /_/g;print "$_"}'
Gruß
Tipp: perl -p ...

tr "_" " " oder sed 's/ /_/g' wären auf der Kommandozeile Alternativen.
 
A

Anonymous

Gast
notoxp schrieb:
abgdf schrieb:
Also, vom Prinzip her würde ich da so rangehen:
Code:
echo "Hallo Welt" | perl -e 'while(<>){$_ =~ s/ /_/g;print "$_"}'
Gruß
Tipp: perl -p ...

tr "_" " " oder sed 's/ /_/g' wären auf der Kommandozeile Alternativen.

da waren wir im obrigen Link schon bedeutend weiter und schneller.
Code:
mv "$f" "${f// /_}"
das ist auch das kleinste Problem. Probleme gibt es in den Schleifen damit, zB bei Rekursiven Arbeitsweise mit Verzeichnissen die ein Leerzeichen haben, mit Leerzeichen am Anfang oder am Ende des Filenames, dort wo die Zieldatei mit dem _ schon existiert darf sie auf keinen Fall überschrieben werden, in versteckten Verzeichnissen, ganz abgesehen von den Lieblingsdateinamen einiger hier :wink: , einem Zeilenvorschub im Dateinamen usw.

robi
 
Hi,

also, dieses Miniskript sollte eigentlich alles im Verzeichnis entsprechend umbenennen:
Code:
#!/usr/bin/env python
#-*- coding: iso-8859-1 -*-
import os
a = os.listdir(os.getcwd())
for i in a:
    os.rename(i, i.replace(" ", "_"))
Gruß
 
Oben