如何比较 09 和 11

如何比较 09 和 11

所以我有一个代码,它采用日期格式的文件名的一部分,并检查该数字是否大于 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

相关内容