[英]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.