Frage

Ich brauche die Aktivierung einer Reihe von Dateien in einer Subversion-Arbeitskopie zu ändern, etwa so:

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

Wie kann ich diesen Prozess automatisieren? Standard-Linux installieren Tools zur Verfügung.

War es hilfreich?

Lösung

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

offensichtlich, andere Skriptsprachen werden genauso gut funktionieren. awk hat den Vorteil, dass sie sich allgegenwärtig.

Andere Tipps

Wenn Sie einen anständigen haben installieren Sie haben Python sollen, geben diesen 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

Ich glaube nicht, Theres eine einfache Möglichkeit, es mit bash / sed / tr / finden zu tun.

Ich würde ein Ruby-/ Perl Skript, das die Umbenennung der Fall ist.

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

Dann einfach tun

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

oder wenn Sie wollen ein ganz dir tun

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

Bitte beachten Sie, dass diese Änderung bricht workingcopies auf Windows- und Mac-Systemen existieren, da sie nicht Fall behandeln kann nur umbenennt.

ich tun dies in der Regel durch die ich will ‚ls‘ Ausgabe in eine Datei, mit vim Makros Umleiten jeden Dateinamen in der Befehlszeile massieren, dann die Datei als ein Shell-Skript auszuführen. Es ist grob, aber effektiv.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top