Bash тест и выполнение, если существует шаблон каталога - PullRequest
2 голосов
/ 09 ноября 2011

Как выполнить встроенный тест на наличие шаблона каталога?

Если шаблон каталога существует, то я хочу изменить этот шаблон chmod.

например, я пытаюсь сделать следующее:

[ -d /usr/local/myproject/*/bin ] && chmod +x /usr/local/myproject/*/bin/*

, но это дает мне ошибку "-bash: [: слишком много аргументов".

Ответы [ 3 ]

5 голосов
/ 09 ноября 2011

нет необходимости проверять:

chmod +x /usr/local/myproject/*/bin/* 2>/dev/null
2 голосов
/ 09 ноября 2011

Не работает, потому что -d test принимает один аргумент. Вы, кажется, проходите больше, чем один. Исправление будет:

for dir in /usr/local/myproject/*/bin; do
    [[ -d $dir ]] && chmod +x $dir/*
done
1 голос
/ 09 ноября 2011

Чтобы извлечь некоторую пользу из моего ответа, просто предположим, что у вас было слишком много каталогов bin, которые вы не могли бы сделать так, как yi_H.

find /usr/local/myproject/ -path '/usr/local/myproject/*/bin' -maxdepth 2 -type d -exec chmod a+x {} + 2>/dev/null
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...