'svn mv'を使用して、bashのディレクトリ内のすべてのファイルを大文字にします

StackOverflow https://stackoverflow.com/questions/199469

質問

次のように、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マクロを使用して各ファイル名を必要なコマンドラインに送信し、ファイルをシェルスクリプトとして実行します。粗野ですが効果的です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top