したがって、日付形式のファイル名の一部を取得し、その数が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