1

'dが必要なファイルがたくさんあるのでsvn mv、すべてを手作業で行うのではありません。

各ファイル名は形式XYZSomething.txtまたは、に従い、それぞれ名前をとSomethingElse.txtに変更する必要があります。xyzSomething.txtsomethingElse.txt

略語の接頭辞を処理する必要がない場合は、次のようなものを使用できます。

for f in *; do svn mv $f ${f,}; done

これは、ファイル名の最初の文字だけを小文字にします。現状では、これで90%の道のりが得られるので、手作業で仕上げるのにそれほど苦痛はありません。しかし、私はまだ将来の知識のために接頭辞をカバーする方法を知りたいです。

だから教えてください、StackOverflowの素晴らしいBashウィザード、これらのファイルの名前を変更するための最良の方法は何ですか?

4

2 に答える 2

0

だからあなたはこれを行うことができます:

$ echo ThisIsAFileName | sed 's/^\([A-Z]*\)\(.*\)/\L\1\E\2/'
thisIsAFileName

また:

for f in *; do svn mv $f `echo $f | sed 's/^\([A-Z]*\)\(.*\)/\L\1\E\2/'`; done

sedの\Lは、\Eまで次の文字を小文字にします

それが最初の文字だけの場合は、次のことができます。

$ echo ThisIsAFileName | sed 's/.*/\l&/'
thisIsAFileName

\lは次の文字を小文字に変換します

ただし、XYZとFの区別がないという理由だけで、XYZFileNameはxyzfileNameに名前が変更されます...

お役に立てれば

于 2012-10-23T19:29:28.057 に答える
0

それは2つの例の両方でトリックを行います:

  $ sed -r 's@^([a-Z]+)([A-Z].*)@\L\1\E\2@' <<< XYZSomething
  xyzSomething

  $ sed -r 's@^([a-Z]+)([A-Z].*)@\L\1\E\2@' <<< SomethingElse
  somethingElse
于 2012-10-23T19:34:02.450 に答える