что такое подстановочный знак для выбора всех каталогов в каталоге


13

я хочу установить липкий бит для всех каталогов в каталоге, кроме файлов. есть ли какие-нибудь символы для этого?

#sudo chmod g+s /var/www/<WILD_CARD_FOR_ALL_DIRECTORIES>

Ответы:


24

Используйте */для сопоставления только каталогов.

chmod g+s /var/www/*/

Для соответствия всем каталогам и подкаталогам используйте **/*/(при условии, что вы globstarвключили в bash):

shopt -s globstar
chmod g+s /var/www/**/*/

2
Работает хорошо, но сломается, как только длина расширенной командной строки превысит ограничение длины командной строки. -> cyberciti.biz/faq/argument-list-too-long-error-solution
Бонси Скотт

1
да, я хорошо это знаю. Тем не менее, ОП попросил «подстановочный знак».
Dogbane

Да! я попросил подстановочный знак, спасибо.
Necktwi

я знаю, что он попросил подстановочный знак. Я только указал, что он потерпит неудачу при некоторых обстоятельствах. Кроме того, здесь нет критических замечаний (я прокомментировал, но проголосовал, потому что в большинстве случаев это рабочее решение) ^^
Бонси Скотт

13

Вы можете использовать найти, см. ниже пример

find /var/www/ -type d -exec chmod g+s {} \;

3
Это хорошо, но не подстановочный знак - но у него есть преимущество в том, что он не терпит неудачу из-за большого количества каталогов
Бонси Скотт

Обратите внимание, что по умолчанию это рекурсивно. Если вы хотите, чтобы ваша команда применялась только к верхнему уровню, вы можете использовать -maxdepth findаргумент.
Крис Харпер

0

Это НЕ подстановочное, поэтому я извиняюсь за отсутствие ответа, однако ...
ls -al |grep ^d | awk '{print$NF}'будет список всех каталогов в текущем каталоге, это до вас , чтобы решить , если вы хотите , чтобы процесс .и ..или лишить их.

echo $(ls -al |grep ^d | awk '{print$NF}') делает это ведет себя как подстановочный знак


Это сломается, если ваши файлы имеют начальные или конечные пробелы или переводы строк.
Крис Складывающаяся
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.