[英]Convert Unix timestamp in human readable
我有以下脚本
size=$1
big_files_list=$(find . -name \*.bytes -type f -printf "%b %h/%f\n" |
awk -v size="$size" '
function basename(file) {
sub(".bytes$", ".properties", file)
return file
}
{if ($1 > size) {
print basename($2) }}')
for i in ${big_files_list}; do
echo "\t"
grep -E 'size|repo-name|creationTime|ob-name|sha' $i | tr "\n" ","
done
在 output 下面打印
size=992198
repo-name=testupload
creationTime=1603278566981
ob-name=cargotracker-master.zip
sha1=ca8bb4e3ddb802a228e945a8fe32c308b2e3d555
size=992198
repo-name=testupload
creationTime=1603278566981
ob-name=cargotracker-master.zip
sha1=ca8bb4e3ddb802a228e945a8fe32c308b2e3d555
size=992198
repo-name=testupload
creationTime=1603278566981
ob-name=cargotracker-master.zip
sha1=ca8bb4e3ddb802a228e945a8fe32c308b2e3d555
size=992198
repo-name=testupload
creationTime=1603278566981
ob-name=cargotracker-master.zip
sha1=ca8bb4e3ddb802a228e945a8fe32c308b2e3d555
其中 grep 并从创建时间在 unix 时间戳的文件中打印日期我知道我们可以使用 date -d @1603278566981 将其转换为可读但记录有很多数字,
任何方式我们都可以在最终 output 之前转换它。 所以最终的 output 应该如下所示
size=992198
repo-name=testupload
creationTime=Sun Nov 16 22:29:41 CET 52775
ob-name=cargotracker-master.zip
sha1=ca8bb4e3ddb802a228e945a8fe32c308b2e3d555
size=992198
repo-name=testupload
creationTime=Sun Nov 16 22:29:41 CET 52775
ob-name=cargotracker-master.zip
sha1=ca8bb4e3ddb802a228e945a8fe32c308b2e3d555
size=992198
repo-name=testupload
creationTime=Sun Nov 16 22:29:41 CET 52775
ob-name=cargotracker-master.zip
sha1=ca8bb4e3ddb802a228e945a8fe32c308b2e3d555
size=992198
repo-name=testupload
creationTime=Sun Nov 16 22:29:41 CET 52775
ob-name=cargotracker-master.zip
sha1=ca8bb4e3ddb802a228e945a8fe32c308b2e3d555
请帮忙,
武士
编辑:这是上面的代码更好地格式化为可读性:
size=$1
big_files_list=$(
find . -name \*.bytes -type f -printf "%b %h/%f\n" |
awk -v size="$size" '
function basename(file) {
sub(".bytes$", ".properties", file)
return file
}
{
if ($1 > size) {
print basename($2)
}
}
'
)
for i in ${big_files_list}; do
echo "\t"
grep -E 'size|repo-name|creationTime|ob-name|sha' $i | tr "\n" ","
done
下面使用 GNU awk 怎么样:
awk '/size|repo-name|creationTime|ob-name|sha/ {
print
}
/creationTime/ {
split($0,map,"-");
dat=(map[2]/10000000)-11644473600;
print "creationTime="strftime("%c",dat)
} $(find <fulldirectorypath> -name "*.bytes" -size="+$size" -type f -printf "%h/%f\n" | awk '{ split($0,map,".");print map[1]".properties" }')
首先,让 find 使用 -size 参数和 pipe output 到 awk 进行大小处理,将扩展从字节更改为属性。 然后用 awk 处理这些文件。 对于除 creationTime 之外的所有条目,只需打印行。 对于创建时间,处理 unix 时间戳并以区域设置形式打印。
这尚未经过测试,因此可能存在错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.