Question

Je dois modifier la capitalisation d'un ensemble de fichiers dans une copie de travail Subversion, comme suit:

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

Comment puis-je automatiser ce processus? Outils d'installation standard disponibles sur Linux.

Était-ce utile?

La solution

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

évidemment, les autres langages de script fonctionneront aussi bien. awk a l'avantage qu'il est omniprésent.

Autres conseils

Si vous avez une installation correcte, vous devriez avoir python, essayez ceci:

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

Je ne pense pas qu’il soit facile de le faire avec bash / sed / tr / find.

Je créerais un script Ruby / Perl qui renommerait.

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

Ensuite, faites simplement

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

ou si vous voulez faire un répertoire entier

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

Notez que cette modification casse les versions de travail existantes sur les systèmes Windows et Mac, car ils ne peuvent pas gérer uniquement les cas renommés.

En général, je le fais en redirigeant la sortie 'ls' vers un fichier, en utilisant les macros vim pour masquer chaque nom de fichier dans la ligne de commande souhaitée, puis en exécutant le fichier en tant que script shell. C'est brutal mais efficace.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top