フォルダとサブフォルダを繰り返し、タイムスタンプをUTC形式に変換し、.csvファイルをエクスポートするシェルスクリプト

フォルダとサブフォルダを繰り返し、タイムスタンプをUTC形式に変換し、.csvファイルをエクスポートするシェルスクリプト

50個のフォルダとサブフォルダに多数の画像ファイル(約100,000個)が格納されており、このデータを自動的に処理するスクリプトを作成する必要があります。

私は文章を書こうとしています。シェルスクリプトやや複雑な作業では、現在正しい方法で実行するよう努めています。したがって、可能な限り最良の説明を提供するために、このスクリプトで達成したい主な事項を次のように書きます。

まず、スクリプトはフォルダとサブフォルダを繰り返し、ファイル名とフルパスを抽出する必要があります。

第二:ファイル名には時間と日付の情報が含まれています。つまり、20180612074405680です。変換するにはスクリプトが必要です。世界時形式.ie: 2018-06-12 T 07:44:05 TZ +01:00

最後に、これらすべてを.csvファイルにエクスポートする必要があります。

最終的な.csvファイルには、次の情報を含める必要があります。

File path, filename, time
C:/folder/sub-folder/file, 20180612074405680_ZTRDEFO_Blackgen.jpg, Time in UTC

ファイル名のタイムスタンプ形式は上記のように指定する必要があります。

コマンドを使用してフォルダとサブフォルダを繰り返してファイル名を取得しようとしましたが、findまだファイルのフルパスを取得できませんでした。

誰でも助けたり、ヒントを与えることができますか?

ベストアンサー1

速くて汚い:

find "/full/path/of/the/base/dir" -type f -printf "%f;%h;%f\n" \
    | sed -r 's/;([0-9][0-9][0-9][0-9])([0-9][0-9])([0-9][0-9])([0-9][0-9])([0-9][0-9])([0-9][0-9])([0-9][0-9][0-9])([^;]*)$/;\1-\2-\3T\4:\5:\6/ TZ +01:00'

この方法は、次の条件が満たされた場合に機能します。

  1. ファイル名のタイムスタンプは+01:00タイムゾーンにあり、
  2. ファイル名とパス名には ";"文字は含まれません。

おすすめ記事