Итак, учитывая ограниченную информацию, которую вы предоставили, позвольте мне указать мои предположения, которые, если какие-либо неверны, дайте мне знать, и я / мы можем настроить ответ. Допущения имеют решающее значение для хранения логики короткой и сладкой, в противном случае вы спускаетесь в режим «Overkill».
Успедание 1. «Суффикс» для вашего файла - это то, что вы хотите изменить, и «суффикс» - это число (ы) после подчеркивания, что означает подчеркивание («_»), является вашим сепаратором.
Успение 2. Там будет только один подчеркивание в исходном имени файла - не два или более подчеркиваемых, а ни один без подчеркивания
предположение 3. Вы хотите «префикс», который является значением до сепаратора (Как определено в предположении 1), чтобы остаться точно таким же.
Предположение 4. Независимо от оригинального суффикса вы хотите, чтобы новый суффикс использовал один и тот же сепаратор (как определено в предположении 1), и что новый суффикс увеличивается не по месту срока или какого-либо другого значения, отличного от порядосования, как Это было перед переименованием (значением, приводимым в действие оригинальной альфа-числовой порядок сортировки имен файлов).
Предположение 5. Вы хотите, чтобы он был справедливым «простым», который, к сожалению, полностью произвольно, но я определим его как «не сложным для петлей, ни в то время как петли» и «не слишком много странных команд SED или awk».
Итак, это не сложная проблема, но учитывая перечисленные ограничения, это становится и интересная задача. Несмотря на это, я все еще прибегал к использованию «простых» для цикла и «простой» awk:
cnt=0
for i in *; do
let cnt=cnt+1
mv "$i" "$(echo "${i}_${cnt}" | awk -F_ '{print $1"_"$3}')"
done
, если в одном каталоге есть другие файлы, которые вы не хотите переименовать, как это было в моем оригинальном тестировании (я был Тестирование в каталоге / TMP
/ TMP , которые имели другие файлы, которые я не хотел переименованы), то фильтруйте с какой-то частью префикса, например:
cnt=0
for i in 71116*; do
let cnt=cnt+1
mv "$i" "$(echo "${i}_${cnt}" | awk -F_ '{print $1"_"$3}')"
done
Я посмотрел на ответы в вашей ссылке - И я согласен, что это вопиющие излишки, как и многие ответы на STACKEXCHANGE. Тем не менее, большинство «поверхностных» ответов полагаются на меньшее количество предположений, поэтому в теории они более «универсальные» и / или более «портативные», чем я здесь предлагаю.
Если вы встретите то же самое Выпуск в то время как непосредственно открывая PDF, скорее всего, OpenWith - это то, что вы хотите: http://www.emacswiki.org/Openwith .