2017-11-02 2 views
-1

大文字の名前のファイルのリストを作成し、同じ名前で小文字のファイルに名前を変更しようとしました。だから私はFILE1、FILE2、FILE3などのファイル名を持つ20のファイルを持っている場合、私はそれぞれfile1、file2、file3などに名前を変更したい。私は以下のコマンドを実行していますfindコマンドを使用してファイル名を変更する

[[email protected] files]# find . -name 'FILE*' -exec mv {} `echo {} | tr [:upper:] [:lower:]` \; 

しかし、私はmvコマンドから以下のエラーを受け取りました。誰かが私がここで何が欠けているか教えてもらえますか? mv: './FILE1'と './FILE1'は同じファイルです mv: './FILE2'と './FILE2'は同じファイルです mv: './FILE3'と './FILE3'同じファイルです mv: './FILE4'と './FILE4'は同じファイルです mv: './FILE5'と './FILE5'は同じファイルです mv: './FILE6'と ' ./FILE8 'と同じファイルです mv:' ./FILE7 'と' ./FILE7 'は同じファイルです mv:' ./FILE8 'と' ./FILE8 'は同じファイルです mv:' ./ './FILE10'と './FILE10'は同じファイルです mv: './FILE11'と '。 : './FILE12'と './FILE12'は同じファイルです mv: './FILE13'と './FILE13'は同じファイルです mv: './FILE14'と './FILE14'は同じファイルです mv: ' ./FILE16 'と' ./FILE16 'は同じファイルです mv:' ./FILE18 'と' ./FILE18 'は同じファイルです mv:' ./FILE20 'と' ./FILE20 'は同じファイルです mv: './FILE15'と './FILE15'は同じファイルです mv: './FILE17'と './FILE17'は同じファイルです mv: './FILE19'と './FILE19'同じファイルです [root @ host-1-1ファイル]#

PS:私はすでにループのために使用しており、私の要件を満たしています。私はfindコマンドで私の理解に取り組んでいます。

+0

。可能であれば、より低い権限を持つアカウントを使用することをお勧めします。 –

答えて

0

ここでの問題は、コマンド置換が最初に起こることである。

`echo {} | tr [:upper:] [:lower:]` 

はに名前を変更するための名前として{}を残します。だけにしてfind -execが、これはそれがで埋めるのテンプレートで、その時点でのファイル名、と{}を置き換えない:もちろん

mv {} {} 

、そのあなたが取得しているエラーを与えるmv ./FILE1 ./FILE1で結果。

+0

正しいコマンドは何でしょうか? –

+0

私はシェルの 'for'ループでそれをやっています。あなたがそれを解決したという質問であなたが言う方法です。 –

0

YMMVが、それので、私は一般的に、renameコマンドのために達する:

  • は簡単ですが、
  • 「ドライラン」オプションを持っている(-n
  • は壊しません。 2つのファイルの名前が同じ出力ファイルに変更された場合

あなたのコマンドその後、次のようになります。

rename -n 'y/A-Z/a-z/' FILE* 

リンクいくつかのexamplesman pageに。あなたがルートとしてこれを実行しているように見えます

+0

私の以前のような編集。私はCentOSシステムでリネームオプションを試しました。無効なオプション.. :( –

+0

CentOSでは 'prename'と呼ばれるかもしれません - 本当にPerlスクリプトです。 –

関連する問題