Pergunta

Eu preciso mudar a capitalização de um conjunto de arquivos em uma cópia de trabalho do Subversion, assim:

svn mv test.txt Test.txt
svn mv test2.txt Test2.txt
svn mv testn.txt Testn.txt
...
svn commit -m "caps"

Como posso automatizar esse processo? Linux Standard instalar ferramentas disponíveis.

Foi útil?

Solução

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

Obviamente, outras linguagens de script irá funcionar tão bem. awk tem a vantagem de que ele onipresente.

Outras dicas

Se você tem um decente instalar você deve ter python, tentar dar um presente:

#!/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

Eu não acho que há uma maneira fácil de fazê-lo com bash / sed / tr / encontrar.

Eu faria um script Ruby / Perl que faz a mudança de nome.

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

Em seguida, basta fazer

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

ou se você quiser fazer um dir toda

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

Por favor, note que esta alteração quebra workingcopies em sistemas Windows e Mac já existentes, como eles não podem lidar com caso somente renomeia.

Eu normalmente faço isso redirecionando a saída dos 'ls' para um arquivo, usando vim macros para massagear cada nome de arquivo na linha de comando eu quero, em seguida, executar o arquivo como um script shell. É bruto, mas eficaz.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top