Способ сделать это - просто выполнить su
в начале скрипта. Пользователь вводит пароль root только один раз в начале сценария. Затем вы можете выполнять команды без привилегий root, выполнив su [имя пользователя] -c [ваша команда, которая не должна выполняться с привилегиями root]
.
Однако здесь нельзя использовать диалоговые окна для запроса пароля.
Есть много способов сделать это. Все приведенные ниже параметры работали в z/OS.
Если ваш find
не поддерживает -path
, и поскольку вы предполагаете, что никакие имена файлов не будут содержать новые строки (путем передачи в wc
), вы можете обойти это с помощьюgrep
:
find /tmp/ -type f -mtime +90 | grep -v /tmp/dir2-exclude | grep -v /tmp/dir4-exclude | wc -l
Если ваши исключенные каталоги имеют общий шаблон (, который не исключает ничего, что вы хотите сохранить ), вы можете упростить его до:
find /tmp... | grep -cv '/tmp/dir.*-exclude'
... опять же с пониманием того, что это приведет к неправильному -подсчету результатов поиска, если в них есть каталоги или имена файлов с символами новой строки.
Если ваш find
поддерживает несколько начальных путей, а те, которые вы хотите включить, имеют общий шаблон, вы можете обойти это таким образом:
find /tmp/dir*-include -type f -mtime +90 | wc -l
Кроме того, -опция сокращения не опускается ниже указанных каталогов.
find /tmp/ -type d -name "/dir2-exclude" -prune -o -type d -name "/dir4-exclude" -prune -o -type f -mtime +90 | wc -l