Переименовать несколько каталогов, постепенно уменьшающих порядковый номер?

После некоторого жесткого исследования кода удара я узнал тот удар time использование getrusage() и GNU time использование times(). getrusage() намного более точно из-за разрешения микросекунды.

3
04.12.2012, 00:17
3 ответа

Это постепенное уменьшение может быть сделано довольно не использующим высокие технологии способом: генерируйте список, запуститесь вначале. Дело не в этом легкий к “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
7
27.01.2020, 21:11
  • 1
    Пример удара (с редактированием Glenn для выражения замены) сделал точно, что я хотел. Спасибо вам обоим! –  a CVn 04.12.2012, 00:08

Другой подход:

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
1
27.01.2020, 21:11
  • 1
    Кавычки в комнате и mv аргументах команды не строго необходимы, так как мы знаем, что содержание сгенерированного имени каталога не будет содержать пробел. –  glenn jackman 04.12.2012, 02:02
  • 2
    взлома, в то время как технически верный, заключение в кавычки обычно считают лучшей практикой. –  laebshade 04.12.2012, 05:44

Можно также использовать графический инструмент KRename.

Вот шаги:

  1. выберите файлы
  2. выберите опцию переименовать файлы
  3. включите JavaScript plugin\
  4. поле Prefix набора для освобождения Снабдите суффиксом: пустое, Имя файла: используйте настоящее имя, Расширение: другое расширение: [js;krename_extension-OFFSET] где OFFSET значение, которое необходимо постепенно уменьшить.
0
27.01.2020, 21:11

Теги

Похожие вопросы