Создайте символьные ссылки на файлы с помощью подстановочных знаков

Это может быть / lib и/lib64 (если это существует), который вызывает это.

Они могут заполниться быстрее, чем Вы хотите, если Вы выполняете некоторые chrooted среды или устанавливаете дополнительное программное обеспечение.

7
12.02.2013, 01:36
3 ответа

Ну, если это - все в том же каталоге, Вы могли бы сделать что-то вроде этого в ударе или любой другой оболочке Bourne-style/POSIX:

for FILE in dev-*; do ln -s "$FILE" "${FILE#dev-}"; done

который создал бы символьные ссылки без "dev-" в файлы, начинающиеся "dev-".

10
27.01.2020, 20:14
  • 1
    Похож на средство форматирования кода, не любит $ {param#word} формат. В этом контексте # не рассматривают как комментарий, но как инструкцию удалить dev-из значения, сохраненного в файле –  James Thompson 11.02.2013, 23:37
  • 2
    Просто должны заботиться с именами файлов с забавными символами... и ${FILE#dev-} bashishm, AFAIU (определенно не в /bin/sh на Солярисе путь назад). –  vonbrand 12.02.2013, 01:38
  • 3
    @vonbrand, ${FILE#dev-} не Bourne, но POSIX (был представлен ksh, не колотят). Вам нужно -- для ln отметить конец опций для a * шаблон, или лучше, использует a dev-* шаблон. Код, как это, создал бы символьные ссылки на себя в каждом подкаталоге текущего каталога, имя которого не запускается с dev-. См. также примечания в моем ответе. –  Stéphane Chazelas 12.02.2013, 08:48
  • 4
    Благодаря всем, для Вашей справки и объяснений. Добавление dev-* вместо * работавший, как предназначено здесь - поскольку код стоит выше его, пытается создать символьные ссылки для каждого файла. –  gbentley 13.02.2013, 21:35

Я обычно использую краткую остроту.

for file in dev-*.php; do ln -s $file $(echo "$file" | sed 's/^dev-//'); done

Это циклически повторяется через 'dev - *.php' файлы, получая новое имя без 'dev-', затем создавая символьную ссылку.

5
27.01.2020, 20:14

С zsh, Вы сделали бы:

autoload zmv # typically in ~/.zshrc
zmv -Lsv 'dev-(*.php)' '$1'

С bash или другие оболочки POSIX (включая zsh):

for f in dev-*.php; do
  ln -s "$f" "${f#dev-}"
done

Отметьте это если site.php существует и каталог (или символьная ссылка на каталог), затем можно закончить с a dev-site.php символьная ссылка в нем. С GNU ln Вы могли добавить -T опция принять меры против этого (с zmv использовать -o -T передать -T опция вниз к ln).

2
27.01.2020, 20:14

Теги

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