Как хакерский bash
скрипт:
#!/bin/bash
while IFS= read -r file; do
newprefix=${file%%_Data*}
if [ "$prefix" != "$newprefix" ]; then
cnt=1
prefix=$newprefix
fi
newfile=$(echo "$file" | sed "s/[0-9]*\(_Image.txt\)/$cnt\1/")
echo mv "$file" "$newfile"
((cnt++))
done < <(find. -maxdepth 1 -type f -name '*.txt' | sort -nt_ -k2,2 -k7,7)
Выход:
$./script.sh
mv./FoilHole_6862563_Data_6834945_6834947_20190608_255634_Image.txt./FoilHole_6862563_Data_6834945_6834947_20190608_1_Image.txt
mv./FoilHole_6862563_Data_6834952_6834954_20190608_255710_Image.txt./FoilHole_6862563_Data_6834952_6834954_20190608_2_Image.txt
mv./FoilHole_6862563_Data_6834959_6834961_20190608_255748_Image.txt./FoilHole_6862563_Data_6834959_6834961_20190608_3_Image.txt
mv./FoilHole_6862563_Data_6834935_6834937_20190608_255827_Image.txt./FoilHole_6862563_Data_6834935_6834937_20190608_4_Image.txt
mv./FoilHole_6862563_Data_6834967_6834969_20190608_255906_Image.txt./FoilHole_6862563_Data_6834967_6834969_20190608_5_Image.txt
mv./FoilHole_6862568_Data_6834945_6834947_20190608_060123_Image.txt./FoilHole_6862568_Data_6834945_6834947_20190608_1_Image.txt
mv./FoilHole_6862568_Data_6834952_6834954_20190608_060159_Image.txt./FoilHole_6862568_Data_6834952_6834954_20190608_2_Image.txt
mv./FoilHole_6862568_Data_6834959_6834961_20190608_360237_Image.txt./FoilHole_6862568_Data_6834959_6834961_20190608_3_Image.txt
mv./FoilHole_6862568_Data_6834935_6834937_20190608_460316_Image.txt./FoilHole_6862568_Data_6834935_6834937_20190608_4_Image.txt
mv./FoilHole_6862568_Data_6834967_6834969_20190608_560354_Image.txt./FoilHole_6862568_Data_6834967_6834969_20190608_5_Image.txt
Переменная-счетчик cnt
сбрасывается на 1
при каждом изменении префикса имени файла, например. когда ./FoilHole_6862563
изменится на ./FoilHole_6862568
. Чтобы действительно переименовать файлы, вы должны удалить echo
в скрипте.
См. описание экспериментальных функций Docker :
.Experimental features are not ready for production. They are provided for test and evaluation in your sandbox environments.
Это подтверждает ваше подозрение, не объясняя его толком. Как правило, экспериментальные функции помечаются как таковые по крайней мере по одной из следующих причин:
Даже при условии хорошо -проверенных экспериментальных функций причина, по которой на них не следует полагаться в производстве, состоит в том, что нет абсолютно никакой гарантии, что они останутся такими -в будущих версиях. Это означает, что если вы в конечном итоге полагаетесь на них, вы можете оказаться в ситуации, когда, например, вам нужно выполнить обновление до более новой версии (, чтобы исправить проблемы с безопасностью ), но эта версия изменяет экспериментальная особенность обратно -несовместимым образом,или даже совсем отбрасывает.