[ Gelöst ] Alle Dateien in dateiname.sh umbenennen

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
Benutzeravatar
Inkodiktus
Beiträge: 702
Registriert: 15.08.2013 01:15:35
Lizenz eigener Beiträge: GNU General Public License
Wohnort: » host@user╺─╸[~]

[ Gelöst ] Alle Dateien in dateiname.sh umbenennen

Beitrag von Inkodiktus » 16.12.2014 17:40:54

Hallo liebe Gemeinde :lol:

Ich habe gerade so ein kleines Problemchen und habe auch schon danach gesucht, aber so richtig finde ich nichts.
Deshalb hoffe ich wieder mal auf eine gute Seele hier, die mir hilft. :)

Ich möchte einfach alle Dateien, welche ohne Endung sind, in dateiname.sh umbennen.
Wie kann ich das denn machen?


dateiname ist dann der gleiche Name wie zuvor. Ich sag nur, damit nicht wieder Missverständnisse auftauchen. :)

Vielen Dank
Viele Grüße!
Zuletzt geändert von Inkodiktus am 17.12.2014 14:01:43, insgesamt 1-mal geändert.
Meine Sprachkenntnisse: nur deutsch
Mein Laptop: http://www.asus.com/Notebooks_Ultrabook ... ifications
Mein Debian: Stable + OpenBox
Mein Editor: Emacs
Meine Devise: Frei bleiben - so lange wie es geht : -)

dufty2
Beiträge: 1714
Registriert: 22.12.2013 16:41:16

Re: Alle Dateien in dateiname.sh umbenennen

Beitrag von dufty2 » 16.12.2014 18:14:04

Fürs erste

Code: Alles auswählen

$ for i in `ls | grep -v "\..*"` ; do mv $i $i.sh ; done
Ziemlich haesslich und deckt Sonderfälle nicht ab, wie etwa
Dateien blub und blub.sh vorhanden, dass blub.sh vom (neuen) blub.sh überschrieben wird

Benutzeravatar
Inkodiktus
Beiträge: 702
Registriert: 15.08.2013 01:15:35
Lizenz eigener Beiträge: GNU General Public License
Wohnort: » host@user╺─╸[~]

Re: Alle Dateien in dateiname.sh umbenennen

Beitrag von Inkodiktus » 16.12.2014 18:40:50

Hässlich ist doch nicht schlecht, Hauptsache es funktioniert. :)
Ich hatte gerade eine .sh Datei da und die hat er in #datei.sh# umbenannt :)
Ah ja und die #datei.sh# ist eine Kopie. :) Was man mit Shell nicht alles machen kann. :)
Alle anderen aber dann richtig. Nur zur Korrektur für dich oder andere.
Danke! :THX:
:hail: :hail: :hail: :mrgreen:

Edit:
Ich lass noch auf ungelöst, vielleicht kommen noch andere Spezialisten. :D
Meine Sprachkenntnisse: nur deutsch
Mein Laptop: http://www.asus.com/Notebooks_Ultrabook ... ifications
Mein Debian: Stable + OpenBox
Mein Editor: Emacs
Meine Devise: Frei bleiben - so lange wie es geht : -)

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Alle Dateien in dateiname.sh umbenennen

Beitrag von Cae » 17.12.2014 01:09:37

Man kann natuerlich Perl draufwerfen in Form von rename(1):

Code: Alles auswählen

$ touch a b c nix.sh
$ rename 's/$/.sh/' *
$ ls
a.sh  b.sh  c.sh  nix.sh.sh
$ 
Offensichtlich sollte man besser Dateien ausschliessen, die schon auf .sh enden:

Code: Alles auswählen

$ rm a.sh b.sh c.sh nix.sh.sh  ## Verzeichnis leeren
$ touch a b c nix.sh
$ rename '$_=~/\.sh$/||$_=~s/$/.sh/' *
$ ls
a.sh  b.sh  c.sh  nix.sh
$ 
rename(1) ueberschreibt uebrigens mittlerweile keine bestehenden Dateien mehr.

Auf der Shell wuerde man das so machen: (Achtung, Unterschiede zum Vorgaenger: arbeitet rekursiv (also betrifft auch tiefere Verzeichnisse) und ueberschreibt ohne Warnung)

Code: Alles auswählen

$ rm a.sh b.sh c.sh nix.sh  ## Verzeichnis leeren
$ touch a b c nix.sh
$ find -type f -print0 | grep -zv '\.sh$' | xargs -0I{} mv {} {}.sh
$ ls
a.sh  b.sh  c.sh  nix.sh
$ 
-print0, -z und -0 sorgen dafuer, dass Null-Bytes als Dateinamentrenner verwendet werden, damit man keine Probleme mit bekommt, falls Dateinamen einen Zeilenumbruch enthalten. Ansonsten wird nach bereits vorhandenen .sh-Endungen aussortiert und alles andere umbenannt.

Gruss Cae
Zuletzt geändert von Cae am 17.12.2014 18:40:27, insgesamt 1-mal geändert.
Grund: rm * praezisiert
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Benutzeravatar
Inkodiktus
Beiträge: 702
Registriert: 15.08.2013 01:15:35
Lizenz eigener Beiträge: GNU General Public License
Wohnort: » host@user╺─╸[~]

Re: Alle Dateien in dateiname.sh umbenennen

Beitrag von Inkodiktus » 17.12.2014 13:51:48

@Cae : Danke
Frag mich nur, warum ich vorher alle Dateien mittels rm * löschen soll??

Damit benennt er auch Verzeichnisse um :)

Code: Alles auswählen

rename '$_=~/\.sh$/||$_=~s/$/.sh/' *
Damit auch und die Dateien kriegen noch ein .sh, dh: a.sh.sh

Code: Alles auswählen

rename 's/$/.sh/' *
Ist schon lustig das Ganze :D

Das hat am BESTEN funktioniert!

Code: Alles auswählen

find -type f -print0 | grep -zv '\.sh$' | xargs -0I{} mv {} {}.sh
Nochmals besten DANK!
:hail: :hail: :hail: :hail: :THX:
Meine Sprachkenntnisse: nur deutsch
Mein Laptop: http://www.asus.com/Notebooks_Ultrabook ... ifications
Mein Debian: Stable + OpenBox
Mein Editor: Emacs
Meine Devise: Frei bleiben - so lange wie es geht : -)

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Alle Dateien in dateiname.sh umbenennen

Beitrag von Cae » 17.12.2014 18:38:14

Cae hat geschrieben:

Code: Alles auswählen

$ rm *
$ touch a b c nix.sh
...
Inkodiktus hat geschrieben:@Cae : Danke
Frag mich nur, warum ich vorher alle Dateien mittels rm * löschen soll??
Dir steht natuerlich frei, das auch bei deinen Produktivdaten zu machen... ;) aber oben tue ich das, damit ich wieder ein freies Testverzeichnis habe, wo ich direkt danach mittels touch Testdateien anlege. Die [code]-Bloecke sind zusammenhaengend zu lesen, ich habe am Ende vom ersten Block eine Datei a.sh, welche beim rename im zweiten Block zu einem Fehler fuehren wuerde (Abbruch, weil "ist schon da"). Ich hab' oben mal die Wildcard durch die expliziten Dateinamen ersetzt, in der Hoffnung, dass es zu weniger Verwirrungen fuehrt.

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Antworten