apt install: разница между regex и var=regex

Сzsh:

autoload zmv # best in ~/.zshrc
zmv '(**/)(* *)' '$1${2// /_}'

Как и в вашем коде, он не переименовывает скрытые файлы. Он также не заглядывает в скрытые каталоги. Если вы хотите переименовать их, измените его на:

autoload zmv # best in ~/.zshrc
zmv '(**/)(* *)(#qD)' '$1${2// /_}'

bashэквивалентно (, но без гарантий, обеспечиваемых zmv, поэтому вы можете добавить опцию -iкmv)последней из них будет:

LC_ALL=C find. -depth -name '* *' -exec bash -c '
  for file do
    base=${file##*/}
    mv -i -- "$file" "${file%/*}${base// /_}"
  done' bash {} +

Нет простого эквивалента первому, так как нельзя комбинировать -prune(, что было бы необходимо, чтобы не спускаться в скрытые каталоги )и -depth. Однако функционально эквивалентный вариант может быть записан как:

LC_ALL=C find. -depth -name '* *' ! -path '*/.*' -exec bash -c '
  for file do
    base=${file##*/}
    mv -i -- "$file" "${file%/*}${base// /_}"
  done' bash {} +

Он спускался в скрытые каталоги, но не переименовывал там файлы.

1
24.04.2020, 20:36
1 ответ

У вас есть раскрытие фигурной скобки , а не регулярное выражение. Расширение фигурной скобки не работает внутри кавычек или при назначении/расширении переменной.

Что делает ваша первая команда:

apt install gstreamer1.0-plugins-bad gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly

Что делает ваша вторая команда:

apt install "gstreamer1.0-plugins-{bad,base,good,ugly}"
1
19.03.2021, 02:26

Теги

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