2008-10-13 15 views

Odpowiedz

13

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

oczywiście, inne języki skryptowe będą działać równie dobrze. awk ma tę przewagę, że jest wszechobecny.

+0

Doskonały, tylko jeden liniowiec, którego szukałem! –

+0

wspaniale. awans do wersji –

0

Zwykle robię to przez przekierowanie wyjścia "ls" do pliku, używając makr vima do masowania każdej nazwy pliku w wierszu poleceń, który chcę, a następnie wykonuję plik jako skrypt powłoki. Jest surowy, ale skuteczny.

2

Jeśli masz przyzwoity zainstalować należy mieć Python, spróbuj tego:

#!/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(), nie górny() –

+0

, który będzie zależał od tego, co jest potrzebne, jeśli chce "Filename", to tak, masz rację, jednak zakładałem, że "FILENAME" było potrzebne, w którym to przypadku mam rację. – UnkwnTech

+0

Jeśli przeczytasz jego pytanie, jasne jest, że chciał on "Filename" zamiast "FILENAME", jednak. –

1

Nie sądzę, tam jest łatwy sposób to zrobić z bash/sed/tr/find.

Zrobiłbym skrypt w języku Ruby/Perl, który zmienia nazwę.

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

Następnie wystarczy zrobić

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

lub jeśli chcesz zrobić cały dir

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

Należy pamiętać, że zmiana ta przerwy istniejące workingcopies w systemach Windows i Mac, jak mogą 't obsłużyć zmienia tylko przypadek.

+0

W przypadku Subversion <= 1.6 spowodowało to zerwanie kopii roboczych. Przy wartościach = = 1.7 aktualizacja przynosząc zmiany w przypadku może zauważyć pewne przeszkody, ale możesz odzyskać ten stan bez uszkodzenia swojej kopii roboczej. –