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