Копируйте/переименовывайте несколько файлов с помощью регулярного выражения (сценарий оболочки)

После обширного исследования openvpn руководство, я нашел ответ для своего вопроса:

Я Вы не хотите, чтобы маршруты были выполнены автоматически, но были обработаны Вашим собственным инструментом, использую следующую опцию:

   --route-noexec
          Don't add or remove routes automatically.  Instead pass routes to --route-up script using environmental variables.

При принятии всего, что продвинуто сервером кроме маршрутов, используйте следующую опцию:

  --route-nopull
          When used with --client or --pull, accept options pushed by server EXCEPT for routes.
          When used on the client, this option effectively bars the server from adding routes to the client's routing table, however note that
          this option still allows the server to set the TCP/IP properties of the client's TUN/TAP interface.
8
10.02.2011, 02:09
4 ответа

Используя sed здесь представляет больше сложности, чем это стоит. Используйте встроенные текстовые функции управления оболочки. Например, ${name#assignment02} разделяет префикс assignment02 от $name.

for name in assignment02.*; do
  mv "$name" "assignment03${name#assignment02}"
done

Двойные кавычки не необходимы, если Вы уверены, что имена файлов не содержат специальных символов оболочки.

Если Вы имеете в наличии zsh, zmv функция полезна для этих видов переименований.

autoload zmv
zmv '(assignment)02.(*)' '${1}03.$2'
5
27.01.2020, 20:12

Вы уже думаете слишком сложные

rename 02 03 *02*

'переименуйте' заменяет первый аргумент ('02') вторым аргументом ('03') от имени всех файлов, данных на arg3 или после (*02*)

3
27.01.2020, 20:12
  • 1
    rename команда с этим синтаксисом является утилитой Linux, не доступной на OSX (и даже не доступный этим именем на большей части Debian и установках Ubuntu). –  Gilles 'SO- stop being evil' 11.02.2011, 21:23
  • 2
    , не знал, что Вы были на osx, неприятности –  Patrick 11.02.2011, 22:27
  • 3
    Переименуйте сценарий жемчуга, таким образом, он будет, вероятно, работать на OS X. Найденный этим сюда использование Google: tips.webdesign10.com/files/rename.pl.txt –  azzid 07.02.2015, 14:15

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

for ext in {cc,h,txt}
do 
  echo mv assignment02.$ext assignment03.$ext
done

В конечном счете: Попытайтесь добраться, 'переименовывают'

0
27.01.2020, 20:12

Одним путем Вы могли сделать это:

ls -1  | sed "s/\(.*\)\..*$/mv '&' '\1.txt'/" | sh
-1
27.01.2020, 20:12
  • 1
    Не анализируйте вывод ls. И генерация сценария оболочки является верным способом выстрелить себе в голову. Изогнитесь вопрос Мальчика содержит разумный подход к стороне оболочки, просто пропустив право sed колдовство и некоторое заключение в кавычки. –  Gilles 'SO- stop being evil' 11.02.2011, 21:28

Теги

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