Сzsh
:
zmodload zsh/datetime
strftime -s start '%Y_%m_%d.txt' $((EPOCHSECONDS - 30*86400))
echo -E rm -i 2*.txt(e:'[[ $REPLY > $start ]]':)
Удалите echo -E
, когда будете довольны.
В системе GNU и с оболочкой GNU(bash
)вы можете сделать что-то похожее с:
start=$(date -d '30 days ago' +%Y_%m_%d.txt)
list=()
shopt -s nullglob
for file in 2*.txt; do
[[ $file > $start ]] && list+=("$file")
done
if (( ${#list[@]} > 0)); then
echo -E rm -i "${list[@]}"
fi
Эта проблема возникает из-за того, как анализируется значение e252
.
Он рассматривается как показатель степени (e252 = 10^252
), но для этого обозначения требуется начальное число, например 1e252 = 1x10^252
. Неожиданное форматирование является причиной того, что вы получаете ошибку синтаксического анализа «Неверный числовой литерал».
Очевидно, что вы ищете строковый литерал e252
, поэтому вы сможете использовать следующее для того, что вы намереваетесь:
jq '.raid.c0."e252".s0 +={"device": "/c0/e252/s0"}' < file.json
, что дает:
{
"raid": {
"c0": {
"eid252": {
"s0": {
"device": "/c0/e252/s0"
}
},
"e252": {
"s0": {
"device": "/c0/e252/s0"
}
}
}
}
}