Shell script: Verzeichnisse nach Charakter trennen
Shell script: Verzeichnisse nach Charakter trennen
Moin moin,
ich habe jede Menge Verzeichnisse, die Nach dem Schema "ABC"-"XYZ" benannt sind.
Die würde ich gerne mittels eines Shell Scripts umbenennen/verschieben nach "ABC"/"XYZ"
Kann mir jemand sagen, wie ich das am besten bewerkstelligen kann?
Vielen Dank!
bump
ich habe jede Menge Verzeichnisse, die Nach dem Schema "ABC"-"XYZ" benannt sind.
Die würde ich gerne mittels eines Shell Scripts umbenennen/verschieben nach "ABC"/"XYZ"
Kann mir jemand sagen, wie ich das am besten bewerkstelligen kann?
Vielen Dank!
bump
Re: Shell script: Verzeichnisse nach Charakter trennen
anschauen:
ausführen:
Code: Alles auswählen
find . -maxdepth 1 -type d ! -name . | awk -F- 'NF<3{print "mkdir "$1"; mv "$0" "$1"/"$2}'
Code: Alles auswählen
find . -maxdepth 1 -type d ! -name . | awk -F- 'NF<3{print "mkdir "$1"; mv "$0" "$1"/"$2}'|sh
Re: Shell script: Verzeichnisse nach Charakter trennen
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
Re: Shell script: Verzeichnisse nach Charakter trennen
Das funktioniert super, danke!
Nur...warum funktioniert das
Wo ist das Trennzeichen definiert?
Grüße,
bump
EDITH Sagt: habe es gefunden, bin blind...
Nur...warum funktioniert das
Wo ist das Trennzeichen definiert?
Grüße,
bump
EDITH Sagt: habe es gefunden, bin blind...
Re: Shell script: Verzeichnisse nach Charakter trennen
Hi rendegast,
das wirft nur einen Fehler, macht aber nix böses.
Sowas ist mir lieber, weil ich dann sehe, dass ein Ordner nicht meinem erwarteten Namensschema entspricht. Beim ==2 fällt mir das nicht auf.
@bump: freut mich, dass es dir hilft.
das wirft nur einen Fehler, macht aber nix böses.
Sowas ist mir lieber, weil ich dann sehe, dass ein Ordner nicht meinem erwarteten Namensschema entspricht. Beim ==2 fällt mir das nicht auf.
@bump: freut mich, dass es dir hilft.
Re: Shell script: Verzeichnisse nach Charakter trennen
Parameter -F von awk:Wo ist das Trennzeichen definiert?
Code: Alles auswählen
-F-
Code: Alles auswählen
echo "eins-zwei-drei" |awk -F- '{print $2}'
zwei
Code: Alles auswählen
echo "eins-zwei-drei" |awk -F"-" '{print $2}'
zwei
Re: Shell script: Verzeichnisse nach Charakter trennen
Koennte es da nicht Probleme mit Pfaden mit Subshells drinne geben? (dieser proof of concept geht bestimmt auch kuerzer:)
Das wuerde einen Account a mit root-Rechten und Passwort b anlegen (sofern man den Pfad zur passwd(5) richtig schreibt). Ich hab' so langsam den Eindruck, dass Shell-Skripte einfach nur saumaessig gefaehrlich werden, sofern man nicht ausschliesslich mit vertrauten Daten hantiert. Und es muss ja nicht mal die passwd(5) sein, die beschrieben wird, sondern es reicht schon ein temporaerer su-Wrapper in einer ~/.bashrc des Users.
Gruss Cae
Code: Alles auswählen
$ mkdir 'test$(eval "$(printf echo\ a:b:0:0:\\057:\\057bin\\057sh\ \>\>.\\057passwd)") #-'
$ find -maxdepth 1 -type d ! -name . | awk -F- 'NF<3{print"mkdir "$1";mv "$0" "$1"/"$2}'
mkdir ./test$(eval "$(printf echo\ a:b:0:0:\\057:\\057bin\\057sh\ \>\>.\\057passwd)") #;mv ./test$(eval "$(printf echo\ a:b:0:0:\\057:\\057bin\\057sh\ \>\>.\\057passwd)") #- ./test$(eval "$(printf echo\ a:b:0:0:\\057:\\057bin\\057sh\ \>\>.\\057passwd)") #/
$ find -maxdepth 1 -type d ! -name . | awk -F- 'NF<3{print"mkdir "$1";mv "$0" "$1"/"$2}' | sh
$ cat passwd
a:b:0:0:/:/bin/sh
$
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