find exclude multiple каталогов - z / OS USS Region

Способ сделать это - просто выполнить su в начале скрипта. Пользователь вводит пароль root только один раз в начале сценария. Затем вы можете выполнять команды без привилегий root, выполнив su [имя пользователя] -c [ваша команда, которая не должна выполняться с привилегиями root].

Однако здесь нельзя использовать диалоговые окна для запроса пароля.

0
18.04.2018, 18:51
1 ответ

Есть много способов сделать это. Все приведенные ниже параметры работали в 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
1
28.01.2020, 02:43

Теги

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