使用 'svn mv' 将目录中的每个文件大写,以 bash 为单位



我需要更改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脚本执行。它很粗糙,但很有效。

相关内容

  • 没有找到相关文章

最新更新