句読点と番号付けを変更するには、ファイル名を変更します。

句読点と番号付けを変更するには、ファイル名を変更します。

Ubuntuで多数のjpgファイル名を再帰的に変更するには、コマンドが必要です。

しかし、いくつかの問題もあります。一般的なファイルセットは次のとおりですani-estate-villas_1431640729_3.jpgani-estate-villa_3627544278_7.jpgani-estate-villa_3143254376_5.jpg

-すべてをに置き換えて_すべての番号を削除してから、各ディレクトリにリセットされている番号を追加する必要があります。したがって、同じファイルセットはani_estate_villas_1.jpg、、、ani_estate_villas_2.jpgおよびani_estate_villas_3.jpg他のディレクトリの他のファイルと同じでなければなりません。

再帰の深さは 1 ~ 2 つのディレクトリの深さなので、見つけることもdirectory/file.jpgほぼdirectory/directory/file.jpgランダムにすることもできます。

jpgを含むすべてのディレクトリでコマンドを実行しても機能するため、誰もがこれらの属性を持つすべてのファイルの名前を変更する方法を知っていれば問題ありません。コマンドを実行する方が良いですが、400を超えるjpgファイルを手動で変更することは多すぎるため、より反復的な解決策に本当に感謝します。

krenameを試してみましたが、私のファイルは削除されました。

答え1

あなたはそれを使用することができますprename作成された変換に基づいてファイル名を変更するコマンド真珠

簡単に始めましょう。.jpgディレクトリ内のすべてのファイル名を変更するには、すべてのファイルを-に変更します_sオペレーター(私達はまた利用できますtr)。 Perlコードを実行して各ファイル名を変換します。

prename 's!-!_!g' *.jpg

最後の数値の順序を単純なカウンタに変更するには、カウンタ変数を導入します。私はグローバル変数を$aカウンタとして使用します(追加変数を導入する方が複雑です)。正規表現は(\.[^/.]*)$ファイル拡張子と一致し、$1角かっこで囲まれたグループが代替テキストで一致するものを表します。

prename 's!-!_!g; ++$a; s!_[0-9_]+(\.[^/.]*)$!_$a$1!' *.jpg

ファイル名は、filename引数で指定された順序で名前が変更されます。つまり、拡張順序によって*.jpgファイル番号が決まります。

または、ブロックを使用して明示的にカウンタを初期化することもできますBEGIN

prename 'BEGIN {$a = 1;} s!-!_!g; s!_[0-9_]+(\.[^/.]*)$!_$a$1!; ++$a;' *.jpg

現在のディレクトリのすべてのサブディレクトリでこれを行うには、次のように呼び出します。find

find -type d -exec sh -c 'cd "$1" && prename "$0" *.jpg' 's!-!_!g; ++$a; s!_[0-9_]+(\.[^/.]*)$!_$a$1!' {} \;

関連情報