'svn mv'を使用して、bashのディレクトリ内のすべてのファイルを大文字にします
-
11-07-2019 - |
質問
次のように、Subversion作業コピーのファイルセットの大文字化を変更する必要があります。
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 '{system(" svn mv" $ 0"" toupper(substr($ 0,1,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マクロを使用して各ファイル名を必要なコマンドラインに送信し、ファイルをシェルスクリプトとして実行します。粗野ですが効果的です。
所属していません StackOverflow