簡體   English   中英

Bash:存儲在變量中的紀元時間傳遞給日期命令並制作文件夾名稱

[英]Bash: epoch time stored in variable pass into date command and make folder name

我正在編寫一個腳本,該腳本根據文件名中包含的紀元時間創建子文件夾。 這是一個示例文件名;

movie_lotr_frodo_1608020500_1608020510

所需的 output;

frodo/2020-12-15/movie_lotr_frodo_1608020500_1608020510

這是我的腳本;

dir="/root/user/test"
cd "$dir"

for x in *; do
    name=`echo $x | awk -F"_" '{print $3}'`
    epoch=`echo $x | awk -F"_" '{print $5}'`
    hrdate=$(date -r "$epoch" +%Y-%m-%d)
    mkdir -p "$name/$hrdate"
    mv -- "$x" "$name/$hrdate"
done

我得到了錯誤;

date: 1068020510: No such file or directory

它創建$name文件夾,但不創建$hrdate文件夾。 date -d或未引用的$epoch等日期嘗試了幾件事,但我不知道我在什么方面失敗了。

編輯:我根據#tripleee 的回答對腳本進行了一些更改

這是一個重構版本,具有以下更改:

for x in ./*; do
    epoch=${x##*_}
    tail=${x%"_$epoch"}
    name=${tail%_*}
    hrdate=$(date -r "$epoch" +%Y-%m-%d)
    mkdir -p "$name/$hrdate"
    mv -- "$x" "$name/$hrdate"
done

hrdate 定義后面有一個空格,應該是這樣的:

dir="/root/user/test"
cd "$dir"

for x in *; do
    name=`echo $x | awk -F"_" '{print $3}'`
    epoch=`echo $x | awk -F"_" '{print $5}'`
    hrdate=$(date -r "$epoch" +%Y-%m-%d)
    mkdir -p $name/$hrdate
    mv -- $x $name/$hrdate
done

我從man頁中找到使用--date並添加了@

hrdate=$(date +%F --date "@$epoch")

+%F代表 YYYY-MM-DD 格式。

這對我有用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM