すべてのファイル名は同じ形式ですか?具体的には、 "。" +エポック+".gz"?
その場合は、さまざまなルートを使用できます。これがsedの1つです:
$ echo "XXXX-XXX-2011-01-25-3.6.2-record.pb.1296066338.gz" | sed 's/.*\.\([0-9]\+\)\.gz/\1/'
1296066338
これでエポックが抽出され、gawkコマンドに送信されます。何かのようなもの:
#!/bin/bash
...
epoch=$( echo "XXXX-XXX-2011-01-25-3.6.2-record.pb.1296066338.gz" | sed 's/.*\.\([0-9]\+\)\.gz/\1/' )
readable_timestamp=$( gawk "BEGIN{print strftime(\"%Y%m%d.%k%M\",${epoch})}" )
次に、ファイル名の番号を置き換えたい方法を使用します。sedを介して再度送信できますが、エポックを保存する代わりに、ファイル名の他の部分を保存することをお勧めします。
編集:良い測定のために、私のマシンで動作するサンプル:
#!/bin/bash
filename="XXXX-XXX-2011-01-25-3.6.2-record.pb.1296066338.gz"
epoch=$( echo ${filename} | sed 's/.*\.\([0-9]\+\)\.gz/\1/' )
readable_timestamp=$( gawk "BEGIN{print strftime(\"%Y%m%d.%k%M\",${epoch})}" )
new_filename=$( echo ${filename} | sed "s/\(.*\.\)[0-9]\+\(\.gz\)/\1${readable_timestamp}\2/" )
echo ${new_filename}