2008-10-13 6 views

Antwort

13

ls | awk '{system ("svn mv" $ 0 "" toupper (substr ($ 0,1,1)) substr ($ 0,2))}'

offensichtlich funktionieren auch andere Skriptsprachen genauso gut. awk hat den Vorteil, dass es allgegenwärtig ist.

+0

Perfekt, genau der eine Liner, nach dem ich gesucht habe! –

+0

in der Tat groß. Lassen Sie uns upvote –

0

Normalerweise tue ich dies, indem ich die 'ls'-Ausgabe in eine Datei umadressiere. Verwende vim-Makros, um jeden Dateinamen in die gewünschte Befehlszeile zu bringen, dann führe die Datei als Shell-Skript aus. Es ist grob aber effektiv.

2

Wenn Sie eine anständige haben installieren Sie haben Python sollte, geben diesem einen Versuch:

#!/usr/bin/python 
from os import rename, listdir 
path = "/path/to/folder" 
try: 
    dirList = listdir(path) 
except: 
    print 'There was an error while trying to access the directory: '+path 
for name in dirList: 
    try: 
     rename(path+'\\'+name, path+'\\'+name.upper()) 
    except: 
     print 'Process failed for file: '+name 
+0

name.capitalize(), nicht obere() –

+0

das hängt davon ab, was gewünscht wird, wenn er will "Dateiname" dann ja, Sie sind richtig, aber ich nahm an "FILENAME" wurde gewollt, in diesem Fall bin ich richtig. – UnkwnTech

+0

Wenn Sie seine Frage lesen, wäre es klar, dass er "Dateiname" wollte und nicht "FILENAME". –

1

Ich denke nicht, dass es eine einfache Möglichkeit gibt, es mit bash/sed/tr/find zu tun.

Ich würde ein Ruby/Perl-Skript, das die Umbenennung macht.

#!/usr/bin/ruby 
# Upcase.rb 
ARGV.each{ |i| 
    newname = i.gsub(/(^.|\s.)/{ |x| x.upcase } 
    `svn mv "#{i}" "#{newname}" ` 
} 

Dann tun nur

./Upcase.rb foo.txt test.txt test2.txt foo/bar/test.txt 

oder wenn Sie ein ganzes Verzeichnis

find ./ -exec ./Upcase.rb {} + 
1

Bitte beachten Sie tun möchten, dass diese Änderung bricht workingcopies auf Windows- und Mac-Systemen vorhanden, wie sie können, 't hand case wird nur umbenannt.

+0

Auf Subversion <= 1.6 das brach Arbeitskopien. Mit> = 1.7 kann ein Update, das zu Falländerungen führt, einige Hindernisse erkennen, aber Sie können diesen Status wiederherstellen, ohne dass Ihre Arbeitskopie beschädigt ist. –

Verwandte Themen