大写目录中的所有文件,在bash,使用“SVN MV”
-
11-07-2019 - |
题
我需要改变一组文件的资本在颠覆工作副本,像这样:
svn mv test.txt Test.txt svn mv test2.txt Test2.txt svn mv testn.txt Testn.txt ... svn commit -m "caps"
我如何可以自动完成这一过程?标准的Linux安装可用的工具。
解决方案
LS | AWK '{系统( “MV SVN” $ 0 “” 在toupper(SUBSTR($ 0,1,1))SUBSTR($ 0,2))}'
显然,其他脚本语言将工作一样好。 AWK具有其它无处不在的优点。
其他提示
如果你有一个体面的安装,你应该有蟒蛇,试试这个:
#!/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 /找到。
我会做一个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
或者,如果你想要做一个整体的DIR
find ./ -exec ./Upcase.rb {} +
请注意,现有的在Windows和Mac系统workingcopies,因为他们不能处理的情况下这种变化只休息重命名。
我通常通过重定向“ls”的输出到一个文件,使用vim宏按摩每个文件名进入命令行我想要的,则执行该文件作为外壳脚本执行此操作。这是原油,但有效的。
不隶属于 StackOverflow