как я могу переименовать несколько файлов путем удаления символа или строки?

Не похоже, что существует любой. По моему опыту, XE является только половиной сердечной попытки от Oracle.

Приблизительно год назад я спросил представителя Oracle непосредственно, когда 11g-XE будет доступен (только 10 г было доступно для XE в то время). Его ответ никогда не был. По его словам, база данных является точно тем же, и единственной вещью, которую добавляют 11 г, являются "опции предприятия", которые были бы отключены в XE так или иначе. Он не вошел бы в специфические особенности того, каково это точно было, но упомянуло охрану Данных и RAC как два из них. Я затем спросил его, когда у них будут 64-разрядные 10 г затем. Его ответ был снова никогда. Так как XE ограничен использованием 1 ГБ RAM, он сказал, это не сможет использовать в своих интересах 64 бита. Я даже не знал, что были 11g-64bit пакеты, пока я не видел Вашего вопроса.

Так, по-видимому, кто-то в Oracle понял, насколько глупый все это. Но это все еще похоже на половину сердечной попытки мне. Похоже, что лучший ответ является XE-10g использования для 32-разрядного и XE-11g для 64-разрядного.

Что касается Debian, Oracle все еще поддерживает способный репозиторий по http://oss.oracle.com/debian/, но она только включает 32-разрядные 10 г. Я буду тратить часть из сегодня debianizing они 11g-64bit RPMs.

21
13.04.2017, 15:36
3 ответа

Можно сделать это с довольно маленькой модификацией любого ответа от последнего вопроса:

rename s/ras\.// sw.ras.*

или

for file in sw.ras.*; do
    mv "$file" "${file/ras./}"
done

Объяснение:

rename a perl сценарий, который берет a perl регулярное выражение и список файлов, применяют regex к имени каждого файла в свою очередь и переименовывают каждый файл к результату применения regex. В нашем случае, ras подобран буквально и \. соответствует литералу . (как . один указывает на любой символ кроме новой строки), и он ничем заменяет это.

for цикл берет все файлы, которые запускаются с sw.ras. (стандарт окружает шарик), и циклы по ним. ${var/search/replace} поиски $var для search и заменяет первое вхождение replace, так ${file/ras./} возвраты $file с первым ras. удаленный. Команда таким образом переименовывает файл к тому же имени минус ras.. Обратите внимание на это с этим поиском и заменой, . взят буквально, не как специальный символ.

35
27.01.2020, 19:43
  • 1
    Вы могли объяснить свой ответ другим, извлекающим уроки из? Что "s/ras\.//sw.ras.*"? Я предполагаю, что знаю это, но я хочу быть уверенным, и другой может учиться также. Вторая опция тот же путь. –  H_7 03.03.2012, 18:47
  • 2
    @H_7 Хорошая идея, я добавил объяснение. –  Kevin 03.03.2012, 20:09

В любой совместимой POSIX оболочке (bash, dash, ksh, и т.д.):

for file in sw.ras.[[:digit:]][[:digit:]][[:digit:]]; do
    mv "${file}" "${file/ras\./}"
done

Или с rename:

rename 's/ras\.//' sw.ras.[[:digit:]][[:digit:]][[:digit:]]
5
27.01.2020, 19:43

Другой вариант - использовать mmv (Массовое перемещение и переименование):

mmv '*ras.*' '#1#2'

Не забывайте заключать шаблоны в одинарные кавычки, иначе звезды будут расширяться в уровень оболочки.

Утилита не всегда доступна, но если это не так, вы можете установить ее с помощью:

sudo apt-get install mmv

См. Страницу руководства здесь .

14
27.01.2020, 19:43

Теги

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