Aktiviert den ersten Buchstaben jedes Wortes in einem Dateinamen oder Verzeichnis in Shell

8

Ich versuche, einen Shell-Befehl zu schreiben, wo ich ein Verzeichnis angeben kann, und dann wird jede Datei und jedes Verzeichnis darin den ersten Buchstaben jedes Wortes groß geschrieben haben. Also

/doCumenTS/tesT.txt

sollte zu

geändert werden

/DoCumenTS/TesT.txt

Ich denke, es sollte wie

beginnen %Vor%

Das Problem, das ich nicht herausfinden kann, ist, wie man nur den ersten Buchstaben macht. Ich habe ein Skript gemacht, das den ganzen Dateinamen in Großbuchstaben schreibt, aber ich kann nicht herausfinden, wie man nur den ersten Buchstaben jedes Wortes bekommt.

Danke!

    
user1507982 06.07.2012, 23:21
quelle

5 Antworten

6

Verwenden von GNU Sed

Das geht mit GNU sed ganz einfach. Zum Beispiel:

%Vor%

Einschränkungen

Beachten Sie, dass es sich beim \ U escape um eine GNU sed-Erweiterung handelt. Das Handbuch sagt:

  

Schließlich können Sie als GNU-Erweiterung "sed" eine spezielle Sequenz einfügen, die aus einem umgekehrten Schrägstrich und einem der Buchstaben "L", "l", "U", "u" oder "E" besteht / p>

%Vor%     
Todd A. Jacobs 06.07.2012 23:36
quelle
6

Bash 4.0+ hat eine Parameterersetzung 'Kleinbuchstaben zu Großbuchstaben'. Nur ändern das erste Zeichen benutze es so:

%Vor%

Das Ergebnis:

%Vor%     
Fritz G. Mehner 07.07.2012 07:57
quelle
4
%Vor%

Lösung ist unten:

%Vor%

Von hier: Ссылка

    
Parvinder Singh 29.03.2013 12:17
quelle
3

Vorher:

%Vor%

Änderung:

%Vor%

Nachher: ​​

%Vor%     
glenn jackman 06.06.2014 17:45
quelle
1

Vermeiden Sie den Loop mit Funktionen von v4:

getaggt sind %Vor%

Sie können es in eine Shell-Funktion einbetten:

%Vor%

Verwendung:

%Vor%

Dies funktioniert sogar bei Pfadnamen, die Leerzeichen, Tabulatoren und neue Zeilen enthalten!

%Vor%     
olibre 06.06.2014 08:07
quelle

Tags und Links