我需要更改subversion工作副本中一组文件的大小写,如下所示:
svn mv test.txt test.txtsvn-mv test2.txt test2.txtsvn-mv testn.txt testn.txt。。。svn-commit-m"caps"
我如何实现此过程的自动化?提供标准的linux安装工具。
ls|awk'{system("svn-mv"$0"toupper(substr($0,1))substr($0,2))}'
显然,其他脚本语言也同样适用。awk的优点是它无处不在。
如果你有一个不错的安装,你应该有python,试试看:
#!/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
我认为使用bash/sed/tr/find没有一个简单的方法。
我会制作一个Ruby/Perl脚本来进行重命名。
#!/usr/bin/ruby
# Upcase.rb
ARGV.each{ |i|
newname = i.gsub(/(^.|s.)/{ |x| x.upcase }
`svn mv "#{i}" "#{newname}" `
}
那就做
./Upcase.rb foo.txt test.txt test2.txt foo/bar/test.txt
或者如果你想做一个完整的目录
find ./ -exec ./Upcase.rb {} +
请注意,此更改会破坏Windows和Mac系统上现有的工作副本,因为它们无法处理仅大小写重命名。
我通常通过将'ls'输出重定向到一个文件来实现这一点,使用vim宏将每个文件名按摩到我想要的命令行中,然后将该文件作为shell脚本执行。它很粗糙,但很有效。