Я не думаю, что утилита rename
может обрабатывать обратные ссылки.
Вот портативное решение, предназначенное только для posix:
find . -type f -name '[0-9][0-9][0-9][0-9][0-9]?*' \
-not -name '*.*' |while IFS= read file; do
dir="${file%/*}"
file="${file#$dir/}"
B="${file#?????}"
A="${file%$B}"
mv -i "$dir/$file" "$dir/$A.$B"
done
Это использует глобблирование оболочки (в котором отсутствуют квантификаторы, следовательно, избыточность), чтобы гарантировать, что мы переименовываем только файлы, которые имеют ожидаемые пять начальных цифр, а затем по крайней мере, еще один символ, исключая файлы с точкой в именах.
Затем он перебирает строку за строкой (да, это будет прерываться, если в именах файлов есть разрыв строки - не делайте этого!). Я явно очищаю $IFS
, чтобы пробелы не интерпретировались как разделители полей.
В цикле while я массирую имя файла. Сначала я извлекаю имя каталога (которое равно ./
, если его нет; будьте осторожны, если вы отклоняетесь от find . …
), а затем изменяю переменную $file
, чтобы сохранить только имя файла. Затем я назначаю $B
имени файла, в котором отсутствуют первые пять символов (которые find
уже должны быть цифрами), а $A
- эти первые пять символов. Теперь мы можем сделать переименование с помощью дополнительной точки.
Я использовал mv -i
в качестве безопасности. Это будет интерактивно спрашивать обо всем, что вы перезаписали, прежде чем сделать это.
Можно добавить, что / определяют переключатель компилятора.
Можно хотеть пойти шаг вперед и создать различные конфигурации проекта как варианты стандартной конфигурации Отладки и Проекта версии. Менеджер конфигурации в соответствии с меню сборки позволит Вам выполнить это. Затем, в то время как Вы находитесь на вкладке Build свойств проекта, можно выбрать различные конфигурации и установить константы условной компиляции, которые подходят для каждой конфигурации. Это сохранит Вас много времени, когда Вы захотите подкачать назад и вперед между различными перестановками Вашего условно скомпилированного кода.
Надо надеяться, я не путь вне темы, а скорее, чем "константа", возможно, определяет интерфейс для типа константы и затем использует одну из многих платформ внедрения зависимости для управления определением, инжекцией и время жизни "константы".
Установите его в своем IDE или используйте, переключатель командной строки компилятора т.е. - определяет для Моно.