所以我有一个代码,它采用日期格式的文件名的一部分,并检查该数字是否大于 11。所有文件都遵循相同的命名原则,只是名称和日期不同。 -> 示例:
Huistaak1-HelloWorld_Jonas.De Preter.s.ua_poging_2019-11-12(注意:此文件名是一个目录)
下面是我的代码,它获取最后 2 个数字并将它们与 11 进行比较,如果数字大于则创建一个目录:
for d in ./*/*/; do
[[ ! -d "$d" ]] && continue
char=${d: -3}
(( ${char%/} > 11 )) &&
mkdir -p "$d"late_inzending
done
我遇到的问题是,当日期小于 10 时,它会将 09 与 11 进行比较。这给了我一个错误
09 > 11 --> 'utf-8' 编解码器无法解码位置 679 中的字节 0xc8:无效的连续字节
答案1
我简单地使用 sed 修复了它。
#the string which I'm working with:
#Huistaak1-HelloWorld_Jolien.Peters.s.ua_poging_2019-11-12
for d in ./*/*/; do
char=${d: -3} #:Variable to get the last 2 numbers in this string(12/)
x=${char%/} #:Variable to remove the invisible "/"
y=$(echo $x | sed 's/^0*//')#:Incase there are leading zeros remove them
echo $y
(( "$y" > 11 )) && #Compare the numbers and if $y is bigger then make new directory
mkdir -p "$d"late_inzending
done