После некоторого жесткого исследования кода удара я узнал тот удар time
использование getrusage()
и GNU time
использование times()
. getrusage()
намного более точно из-за разрешения микросекунды.
Это постепенное уменьшение может быть сделано довольно не использующим высокие технологии способом: генерируйте список, запуститесь вначале. Дело не в этом легкий к “productize” путем обработки всех случаев, но это немного больше, чем острота, если Вы желаете к вещам твердого кода как максимальное количество цифр и предполагать, что нет никаких других названных файлов dir.*
. Используя синтаксис удара, настроенный к меньшему количеству ввода:
i=0
for x in dir.{?,??,???}; do
mv "$x" "${x%.*}.$i"
((++i))
done
Обратите внимание, что это должно быть dir.{?,??,???}
и нет dir.*
добираться dir.9
прежде dir.10
.
В zsh Вы могли сделать это немного более устойчивым бесплатно, при помощи <->
расшириться до любой последовательности цифр и (n)
к виду численно (dir.9
прежде dir.10
).
i=0
for x in dir.<->(n); do
mv $x ${x%.*}.$i
((++i))
done
Другой подход:
n=7 # number to delete
max=$(printf "%s\n" dir.* | grep -o '[[:digit:]]*' | sort -n | tail -1)
for (( i=0; i<n; i++)); do rm -r "dir.$i"; done
for (( i=n; i<=max; i++ )); do mv "dir.$i" "dir.$((i-n))"; done
Можно также использовать графический инструмент KRename.
Вот шаги:
[js;krename_extension-OFFSET]
где OFFSET
значение, которое необходимо постепенно уменьшить.