ファイル名に修正時間を追加

ファイル名に修正時間を追加

ファイルの作成日とファイル名を追加する必要があります。たとえば、Testファイルの作成日が2017年3月22日の場合は、test_rbc_22032017に変更する必要があります。個々のファイルに対して操作を実行できますが、指定されたディレクトリにn個のファイルの名前を変更するスクリプトを作成する方法がわかりません。以下を試してみましたが、運がありませんでした。

for f in /path ; do mv -n ""$f"_RBS_(date -r "$f" +"%Y%M%D")"; done

しかし幸運はありません。解決策を提案してください

ベストアンサー1

コマンドにはいくつかの問題があります。

for f in /path ; do mv -n ""$f"_RBS_(date -r "$f" +"%Y%M%D")"; done
  • for f in /path一度だけ繰り返されます(f=使用/path)。おそらく、ディレクトリ内のすべてのファイルをfor f in /path/*考慮したいと思うでしょう(サブディレクトリのファイルを検討したい場合は、これは別の質問です)。/path/

  • mv2つのパラメータが必要です。ソースは明らかにです"$f"。ターゲットは変換された名前でなければなりません。

  • $コマンドの置き換えで何かを逃しました$(...)

  • 書式文字列がdate説明と一致しません(分と単純な日付ではなく、月と日が必要な場合があります)。

  • 作成日ではなく修正日を使用しています。作成日はほとんどのファイルシステムタイプでは保持されません。そのままにします。

  • あなたの説明は、ファイル名を小文字にしたいことを意味します。

上記を修正した後(使用する日付を選択することに加えて)、私たちは次のように終わります。

for f in /path/* ; do mv -n "$f" "${f,,}_rbc_$(date -r "$f" +'%d%m%Y')"; done

考慮すべきもう1つのことは、同じ場所でこれを複数回実行する場合は、ファイルを別のディレクトリに移動するか、すでに適切なサフィックスがあるかどうかをテストする必要があることです(新しいサフィックスを追加する前に削除)。このファイルを変更せずにそのままにしてください。)

おすすめ記事