GNU/Linux >> Linux の 問題 >  >> Linux

linux-shell:ファイル名を作成時の名前に変更

@John1024 に感謝!

最終更新日に従って、異なる拡張子を持つファイルの名前を同時に変更する必要がありました :

for f in *; do
  fn=$(basename "$f")
  mv "$fn" "$(date -r "$f" +"%Y-%m-%d_%H-%M-%S")_$fn"
done

「DSC_0189.JPG」➜「2016-02-21_18-22-15_DSC_0189.JPG」

「MOV_0131.avi」➜「2016-01-01_20-30-31_MOV_0131.avi」

元のファイル名を保持したくない場合:

mv "$fn" "$(date -r "$pathAndFileName" +"%Y-%m-%d_%H-%M-%S")"

私のような初心者に役立つことを願っています!


ファイル システムの日付に基づく命名

Linux シェルの場合:

for f in *.jpg
do
    mv -n "$f" "$(date -r "$f" +"%Y%m%d_%H%M%S").jpg"
done

説明 :

  • for f in *.jpg do

    これにより、すべての jpeg ファイルのループが開始されます。この機能の特徴は、名前にスペース、タブ、またはその他の難しい文字が含まれているものであっても、すべてのファイル名で機能することです。

  • mv -n "$f" "$(date -r "$f" +"%Y%m%d_%H%M%S").jpg"

    これにより、ファイルの名前が変更されます。 -r を使用します date を伝えるオプション 現在の日付ではなく、ファイルの日付を表示します。仕様 +"%Y%m%d_%H%M%S" date に伝えます 指定したとおりにフォーマットします。

    ファイル名、$f 、使用される場所はどこでも二重引用符で囲みます。これにより、奇数のファイル名がエラーを引き起こさないことが保証されます。

    -n mv へのオプション move に既存のファイルを上書きしないように指示します。

  • done

    これでループは完了です。

対話的に使用するために、コマンドをすべて 1 行にまとめたほうがよい場合があります。その場合は、次を使用します:

for f in *.jpg; do mv -n "$f" "$(date -r "$f" +"%Y%m%d_%H%M%S").jpg"; done

EXIF 作成日に基づく命名

(ファイル システムの日付ではなく) EXIF 作成日に基づいてファイルに名前を付けるには、exiftool が必要です。 または同等のもの:

for f in *.jpg
do
    mv -n "$f" "$(exiftool -d "%Y%m%d_%H%M%S" -CreateDate "$f" | awk '{print $4".jpg"}')"
done

説明 :

上記はファイル日付のコマンドと非常に似ていますが、 exiftool を使用しています と awk EXIF画像の作成日を抽出します。

  • exiftool コマンドは次のような形式で日付を提供します:

    $ exiftool -d "%Y%m%d_%H%M%S"  -CreateDate sample.jpg
    Create Date                     : 20121027_181338
    

    必要な実際の日付は、出力の 4 番目のフィールドです。

  • exiftool を渡します awk に出力 必要なフィールドを抽出できるように:

    awk '{print $4".jpg"}'
    

    これにより、日付フィールドが選択され、さらに .jpg が追加されます


これを試してください

for file in `ls -1 *.jpg`; do name=`stat -c %y $file | awk -F"." '{ print $1 }' | sed -e "s/\-//g" -e "s/\://g" -e "s/[ ]/_/g"`.jpg; mv $file $name; done

もっと簡単な方法があるかもしれませんが。


Linux
  1. Linuxで変更日時に基づいてファイルを検索およびソートする方法

  2. Linuxでのアクセス、変更日時に基づいてファイルを検索して並べ替える

  3. ファイルの作成/作成時間を取得しますか?

  1. Lsを実行し、作成された日付で結果を並べ替える方法は?

  2. Linux –ファイルの作成日を見つける方法は?

  3. ファイルの作成日を変更する

  1. 作成日に従ってJpgを並べ替え、単一のPDFに変換しますか?

  2. Bash/Debianでファイル作成日時を取得するには?

  3. ミリ秒単位の時間を取得するコマンド