Pregunta

Necesito cambiar la capitalización de un conjunto de archivos en una copia de trabajo de subversión, de esta manera:

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

¿Cómo puedo automatizar este proceso? Herramientas de instalación de Linux estándar disponibles.

¿Fue útil?

Solución

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

obviamente, otros lenguajes de script funcionarán igual de bien. awk tiene la ventaja de que es ubicuo.

Otros consejos

Si tiene una instalación decente, debería tener Python, intente esto:

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

No creo que haya una manera fácil de hacerlo con bash / sed / tr / find.

Haría un script Ruby / Perl que cambia el nombre.

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

Entonces solo hazlo

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

o si quieres hacer un directorio completo

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

Tenga en cuenta que este cambio rompe las copias de trabajo existentes en los sistemas Windows y Mac, ya que no pueden manejar los cambios de nombre de mayúsculas y minúsculas.

Normalmente hago esto redirigiendo la salida 'ls' a un archivo, usando macros vim para masajear cada nombre de archivo en la línea de comando que quiero, luego ejecuto el archivo como un script de shell. Es crudo pero efectivo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top