特定の順序で画像の名前を変更する


8

これは私の問題です:私は次の名前の500個の画像を含むフォルダを持っています:

1.jpg
2.jpg
3.jpg

等々..

そのフォルダーをコピーしました。次に、同じ画像の名前を501から1000に変更する必要がありますが、次のように並べ替えます。

1.jpg  becomes    501.jpg
2.jpg  becomes    502.jpg
3.jpg  becomes    503.jpg          
....

標準の名前変更コマンドを使用する場合:

i=501;for img in $(find . -iname '*.jpg'); do echo -n "Converting $img"; mv $img $i.jpg  && echo $i && ((i++)); done

501から1000までの画像を注文しますが、すべて散在しています。

23.jpg becomes 501.jpg,    
66.jpg becomes 502.jpg 
...   

(正しい順序ですが、混同します)

私はそれがおそらく私が見逃している1つのコマンドであることを知っています...


2つの変数iとj mv $ i.jpg $ j.jpgを使用して、変数をインクリメントします。
パンサー

ありがとうございました。私は、検索が、答えを見つけることができませんでした...
鎮痛剤

気になるのは、元の名前ですが、どの範囲ですか?元の番号の名前を+500に変更するだけですか?
Jacob Vlijm 2017

はいジェイコブあなた+500。私は菩提が私に言ったことを書き込もうとしていますが、私はlnuxがあまり得意ではありません。私は上記の名前変更コマンドを書くために自分を殺しました:D
Painkiller

私のかわいそうなラップトップは非常に占有されたatmですが、満足のいく答えが出ない場合(私は疑います:))、あなたがうまくいかない場合は、今夜小さなpythonスクリプトを投稿します。
Jacob Vlijm 2017

回答:


7

XfceのデフォルトのファイルマネージャーであるThunarを試してください。それは非常に軽量で、便利な一括名前変更ツールが付属しています。ターミナルで次のコマンドを実行して、Thunarをインストールできます。

sudo apt-get install thunar

おそらく、Ubuntu Softwareからもインストールできます。

ユーティリティの使い方

  1. Thunarをインストールしたら、一括名前変更ユーティリティを起動します。
  2. +アイコンをクリックし、名前を変更するファイルを適切な順序で追加します。
  3. 選択したファイルのリストのすぐ下にあるドロップダウンボックスをクリックし、[ ナンバリング]を選択します。その横のボックスをクリックして、[ 名前のみ]を選択します。
  4. 「次で開始:」ボックスに501と入力し、「テキスト:」ボックスを空のままにします。[ 新しい名前]列に変更のプレビューが表示されます。
  5. 変更を適用するには、[ ファイル名の変更] ボタンをクリックします。

番号付けに加えて、このユーティリティは次のアクションをサポートしています。

  • 日付/時刻を挿入
  • 挿入/上書き
  • 文字を削除
  • 検索と置換
  • 大文字小文字

ありがとうございます、あなたはMVPです!テキストの形式を次のように変更する必要があることを追加するだけです。テキスト-数値。(他の誰かがこれを使用する場合に備えて)
鎮痛剤2017

2
fmを切り替える...単純なタスクを実行することは、私にはやりすぎに思えます。単純なnautilusスクリプト拡張機能を作成すると、fmを切り替えるよりも時間がかかりません。
Jacob Vlijm 2017

1
@JacobVlijm Nautilusと一緒に一括名前変更ツールとしてThunarを使用しています。Thunarはかなり軽量で、Nautilusや他のファイルマネージャとの競合を引き起こさないようです。
pomsky 2017

4
2番目のファイルマネージャーが必要ない場合は、pyrenamer完全に機能し、GUIで出力の前後を比較するときに、バンク名の変更に使用します。
トムブロスマン2017

13

findコマンドは「ディレクトリ」の順序でファイルを検索(23.jpg66.jpg、...)。あなた|sortは発見の後に置くことができます。

しかし、メソッドは複雑すぎます。

for i in $( seq 1 500 ) ; do
    j=$(( $i + 500 ))
    mv $i.jpg $j.jpg
done 

3
for i in {1..500}; do ...蜂が簡単になります。
David Foerster 2017


5

私があなたが正確に何を求めているのか理解できたなら、私はデフォルトの名前変更ツールを使用してそれを行うことができると思います:

rename 's/^(\d+)/sprintf("%d",$1+500)/e' *.jpg -vn

-vn変更を有効にするには、テスト後に(詳細-アクションなし)スイッチを削除する必要があります。


このツールをUbuntuにインストールするにはどうすればよいですか?デフォルトでrenameは、これらすべてのコマンドラインオプションをサポートしていないパッケージprename(1)からリンクされperlます。
David Foerster 2017

@DavidFoersterあなたは正しいかもしれません。現在のインストールリンクが見つかりませんでした(2014年頃から使用していません)。デフォルトの名前変更ツールを使用すると、正規表現はになるはずです's/^(\d+)/sprintf("%d",$1+500)/e'。それに応じて回答を更新します。ありがとう。
センパイスクバ2017

1
これで、回答はAFSHINの複製です。
David Foerster 2017

@DavidFoersterすみません、何の答えですか?私が見ることができる他の唯一の答えは、pomskyとwaltinatorによるものです。どちらも名前変更(どちらのバージョン)も使用しません。
センパイスクバ2017

以前のコメントには、私の回答への直接リンクが含まれています。
David Foerster 2017

0

シェルコマンドだけでこれを実現する別の方法

count = 1; for i in ls; do mv $ i CN $((count ++))。$ {i ## *。}; できた

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.