Hallo liebe Gemeinde
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!
[ Gelöst ] Alle Dateien in dateiname.sh umbenennen
- 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
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 : -)
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 : -)
Re: Alle Dateien in dateiname.sh umbenennen
Fürs erste
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
Code: Alles auswählen
$ for i in `ls | grep -v "\..*"` ; do mv $i $i.sh ; done
Dateien blub und blub.sh vorhanden, dass blub.sh vom (neuen) blub.sh überschrieben wird
- 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
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!
Edit:
Ich lass noch auf ungelöst, vielleicht kommen noch andere Spezialisten.
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!
Edit:
Ich lass noch auf ungelöst, vielleicht kommen noch andere Spezialisten.
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 : -)
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 : -)
Re: Alle Dateien in dateiname.sh umbenennen
Man kann natuerlich Perl draufwerfen in Form von rename(1):Offensichtlich sollte man besser Dateien ausschliessen, die schon auf .sh enden: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)-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
Code: Alles auswählen
$ touch a b c nix.sh
$ rename 's/$/.sh/' *
$ ls
a.sh b.sh c.sh nix.sh.sh
$
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
$
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
$
Gruss Cae
Zuletzt geändert von Cae am 17.12.2014 18:40:27, insgesamt 1-mal geändert.
Grund: rm * praezisiert
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
- 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
@Cae : Danke
Frag mich nur, warum ich vorher alle Dateien mittels rm * löschen soll??
Damit benennt er auch Verzeichnisse um
Damit auch und die Dateien kriegen noch ein .sh, dh: a.sh.sh
Ist schon lustig das Ganze
Das hat am BESTEN funktioniert!
Nochmals besten DANK!
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/' *
Code: Alles auswählen
rename 's/$/.sh/' *
Das hat am BESTEN funktioniert!
Code: Alles auswählen
find -type f -print0 | grep -zv '\.sh$' | xargs -0I{} mv {} {}.sh
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 : -)
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 : -)
Re: Alle Dateien in dateiname.sh umbenennen
Cae hat geschrieben:Code: Alles auswählen
$ rm * $ touch a b c nix.sh ...
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.Inkodiktus hat geschrieben:@Cae : Danke
Frag mich nur, warum ich vorher alle Dateien mittels rm * löschen soll??
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