Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Linux Forum Linux-Web.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

01.04.2010, 16:40

[gelöst] rekursiv Dateien in-place upercase konvertieren

Hallo,

ich möchte einen Ordner rekursiv nach Textdateien (Endung .lab) durchsuchen und alle Textdateien in-place in uppercase konvertieren.

Folgendes habe ich ohne Erfolg versucht:

find coded -iname *.lab | sed -i 's!a-z!A_Z!g'

Vielleicht kann mir jemand weiterhelfen.
Danke im Voraus

strcat

Unix Gladiator

  • »strcat« ist männlich

Beiträge: 2 331

Wohnort: /Earth/Germany/Bavaria/Regensburg

  • Nachricht senden

2

01.04.2010, 17:19

RE: rekursiv Dateien in-place upercase konvertieren

Mit der Zsh

Quellcode

1
2
3
$ setopt extendedglob
$ autoload zmv
$ zmv -Qv '(**/)(*)(.D)' '$1${(U)2}'
Ansonsten http://www.faqs.org/faqs/unix-faq/faq/part2/section-6.html
Christian 'strcat' Schneider <http://www.strcat.de/>
/* When all else fails, read the instructions. */

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »strcat« (01.04.2010, 17:20)


3

01.04.2010, 19:28

war ich glaub unpräzise ... will nicht die Dateinamen ändern, sondern den Inhalt der Textdateien von Lowercase auf Uppercase konvertieren.

4

01.04.2010, 20:14

Dein bisheriger Versuch war so verrückt, dass er grob irreführend war.

Ich würde es so angehen, aber das könnte Probleme geben, wenn die Dateinamen Quotes oder ähnliche Sonderzeichen enthalten:

Quellcode

1
find coded/ -iname '*.lab' -exec bash -c "tr '[:lower:]' '[:upper:]' < '{}' > /tmp/loeschmich; cp /tmp/loeschmich '{}'" \;
Wenn es Sonderzeichen in den Dateinamen gibt, dann würde ich überlegen, es eher so zu machen (in der bash):

Quellcode

1
2
3
4
find coded/ -iname '*.lab'|while read -r dateiname; do
    tr '[:lower:]' '[:upper:]' < "$dateiname" > /tmp/loeschmich;
    cp /tmp/loeschmich "$dateiname";
done

strcat

Unix Gladiator

  • »strcat« ist männlich

Beiträge: 2 331

Wohnort: /Earth/Germany/Bavaria/Regensburg

  • Nachricht senden

5

01.04.2010, 20:19

Ahjetztja..

Quellcode

1
sed -i 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' ...
Christian 'strcat' Schneider <http://www.strcat.de/>
/* When all else fails, read the instructions. */

6

01.04.2010, 20:21

besten Dank, hat wunderbar funktioniert :)

Thema bewerten