Page 1 of 1
Dateinamen finden und als andere Datei abspeichern
Posted: 2017-07-28 15:25
by tsaenger
Hallo zusammen,
ich muss für ein kleines Projekt in einem Ordner mit vielen unterordnern Dateien die mit ge_ge*.php beginnen nach de_DE*.php kopieren.
Per Hand ist das sehr mühsam. Kann mir bitte jemand helfen wie ich das Scripten kann?
Ich habe schon ein paar Dinge versucht bin aber nicht zum Erfolg gekommen:
Code: Select all
find ./ -type f -name "ge_ge*" -exec cp -a '{}' ./ \;
Vielen Dank
Tobias
Re: Dateinamen finden und als andere Datei abspeichern
Posted: 2017-07-28 15:58
by tsaenger
Habe es mit einer for schleife hinbekommen, aber die ist ja ziemlich ressourcenlastig.
for f in $(find ./ -name 'ge_ge*'); do cp "$f" "`echo $f | sed s/ge_ge/de_DE/`"; done
Hat jemand noch eine idee?
Gruß und Danke
Tobias
Re: Dateinamen finden und als andere Datei abspeichern
Posted: 2017-07-28 22:46
by Joe User
Dürfte geringfügig schlanker sein:
Code: Select all
#!/bin/sh
for f in `find ./ -type f -maxdepth 1 -name 'ge_ge*'`
do
x="${f#*/}"
y="de_DE${x#ge_ge}"
cp "$x" "$y"
done
Re: Dateinamen finden und als andere Datei abspeichern
Posted: 2017-07-28 23:00
by tsaenger
Vielen Dank.
Kannst du mir noch einmal bitte helfen.
Nachdem ich das nun erledigt habe muss ich in der Datei: vardef.php die mehrfach existiert die Zeile
'precision' => '' ersetzen durch 'precision' => 0
Ich dachte es mit sed zu erledigen, aber komme mit dem Escapen nicht weiter.
Code: Select all
find -type f -exec sed -i 's/'precision' => ''/'precision' => 0/g' {} \;
Wo ist hier mein Fehler?
Gruß und Danke
Re: Dateinamen finden und als andere Datei abspeichern
Posted: 2017-07-28 23:24
by Joe User
Getestet unter FreeBSD:
Code: Select all
sed -e "s/\('precision' =>\) ''/\1 0/g" -i
Re: Dateinamen finden und als andere Datei abspeichern
Posted: 2017-07-29 20:15
by tsaenger
Hi Joe User,
leider klappt es bei mir unter Debian 7 nicht.
Code: Select all
sed -e "s/\('precision' =>\) ''/\1 0/g" -i vardefs.php
Ich bekomme keinen Fehler, aber in der Datei wird der String leider nicht ersetzt.
Hast du noch eine Idee?
Gruß und Danke
Tobias
Re: Dateinamen finden und als andere Datei abspeichern
Posted: 2017-07-30 01:49
by Joe User
Ich habe es sowohl mit BSD-sed als auch mit GNU-sed getestet und beide funktionieren hier:
Code: Select all
[root@devnoip:~] # echo "'precision' => ''" > vardefs.php
[root@devnoip:~] # cat vardefs.php
'precision' => ''
[root@devnoip:~] # sed -e "s/\('precision' =>\) ''/\1 0/g" vardefs.php
'precision' => 0
[root@devnoip:~] # gsed -e "s/\('precision' =>\) ''/\1 0/g" vardefs.php
'precision' => 0
[root@devnoip:~] #
Eventuell möchte Debians Default-Shell die ' escaped haben, dann müsste es so aussehen:
Code: Select all
sed -e "s/\(\'precision\' =>\) \'\'/\1 0/g"
Re: Dateinamen finden und als andere Datei abspeichern
Posted: 2017-07-30 14:26
by tsaenger
Hallo Joe User,
vielen Dank, so hat es nun geklappt:
Code: Select all
find . -type f -name "vardefs.php" -exec sed -i "s/\('precision' =>\) ''/\1 0/g" {} \;
Gruß
Tobias