Dateinamen finden und als andere Datei abspeichern

Bash, Shell, PHP, Python, Perl, CGI
tsaenger
Posts: 413
Joined: 2003-08-13 01:14

Dateinamen finden und als andere Datei abspeichern

Post by tsaenger » 2017-07-28 15:25

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

tsaenger
Posts: 413
Joined: 2003-08-13 01:14

Re: Dateinamen finden und als andere Datei abspeichern

Post by tsaenger » 2017-07-28 15:58

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

User avatar
Joe User
Project Manager
Project Manager
Posts: 11578
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Dateinamen finden und als andere Datei abspeichern

Post by Joe User » 2017-07-28 22:46

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
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

tsaenger
Posts: 413
Joined: 2003-08-13 01:14

Re: Dateinamen finden und als andere Datei abspeichern

Post by tsaenger » 2017-07-28 23:00

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

User avatar
Joe User
Project Manager
Project Manager
Posts: 11578
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Dateinamen finden und als andere Datei abspeichern

Post by Joe User » 2017-07-28 23:24

Getestet unter FreeBSD:

Code: Select all

sed -e "s/\('precision' =>\) ''/\1 0/g" -i
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

tsaenger
Posts: 413
Joined: 2003-08-13 01:14

Re: Dateinamen finden und als andere Datei abspeichern

Post by tsaenger » 2017-07-29 20:15

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

User avatar
Joe User
Project Manager
Project Manager
Posts: 11578
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Dateinamen finden und als andere Datei abspeichern

Post by Joe User » 2017-07-30 01:49

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"
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

tsaenger
Posts: 413
Joined: 2003-08-13 01:14

Re: Dateinamen finden und als andere Datei abspeichern

Post by tsaenger » 2017-07-30 14:26

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