私が作成した文字列のいくつかの文字を変更したいと思います。ファイルのリストを作成し、各ファイルに「統計」情報を追加する必要があります。たとえば、ファイル名は "K181_111126.CATProduct"
。"K181_111126.CATProduct.2011-11-28 13:33:33.722342000 +0100"
不要な最後の16文字は、次のように解決しました。
find . -type f -exec stat -c%n.%y {} \; | sed 's/.\{16\}$//'
結果:"K181_111126.CATProduct.2011-11-28 13:33:33"
私の問題は、日付と時刻(次の9文字目)の間のスペースを「-」に変更し、時間(13:33:33)のすべての「:」をドット「」に変更する必要があることです。
ロープの長さがすべて違うので、後ろから数えるしかありません。
ベストアンサー1
スペースとコロンの両方を変更するには、少し長い正規表現を使用します。
find . -type f -exec stat -c%n.%y {} \; |
sed 's/ \(..\):\(..\):\(..\).\{16\}$/-\1.\2.\3/'
最後の 24 番目の文字より前のスペースと一致し、次の 2 文字、コンマ、次の 2 文字、コンマ、および別の 2 文字を一致させ、キャプチャし、最後の 16 文字を一致させ、すべてのコンテンツに置き換えます。キャプチャされた最初の式は、逆参照を使用して呼び出すことができます\1
(2番目は\2
などを使用して)。言い換えれば、空白の後ろの2つの数字はそれ自体「代替」されます。つまり、効果的に維持され、ポイント、次の2つの数字などが続きます。