Рекурсивное удаление подкаталогов, не содержащих шаблон на OSX

Как написано в http://thinkinginsoftware.blogspot.com/2014/06/devops-need-no-words-but-code-how-to.html, вот ответ. Я знаю, что не рекомендуется редактировать *cf файлы напрямую, чтобы вы знали, что делать. Надеюсь, это кому-нибудь поможет.

smarthost=mail.sample.com
user=me
alertlist=alert@mail.sample.com
/opt/csw/bin/gsed -i "s/^DS[\s]*.*/DS $smarthost/g" /etc/mail/submit.cf
/opt/csw/bin/gsed -i "s/^DS[\s]*.*/DS $smarthost/g" /etc/mail/sendmail.cf
/opt/csw/bin/gsed -i "/$user:/d" /etc/aliases
echo "$user:$alertlist" >> /etc/aliases
/opt/csw/bin/gsed -i "/root:/d" /etc/aliases
echo "root:$alertlist" >> /etc/aliases
svcadm restart sendmail
echo "So that we never miss again an important communication from servers" | mailx  -s "`hostname` As a sysadmin I want to receive my user mail notifications in my personal email address" me
echo "So that we never miss again an important communication from servers" | mailx  -s "`hostname` As a sysadmin I want to receive root mail notifications in my personal email address" root

1
02.10.2015, 23:50
1 ответ

TurboVNC специально разработан для удаленного использования графического ускорения. Он используется в нескольких академических и правительственных «высокопроизводительных вычислительных» организациях именно для этой цели.

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

Веб-сайт TurboVNC: http://www.virtualgl.org/

-121--105272-

У меня есть виртуальная машина, подключившая образ iso в качестве виртуального cdrom, что почти совпадает с настройкой.

Я добавил эту строку к /etc/fstab

/dev/cdrom /repo iso9660 rootcontext=system_u:object_r:public_content_t:s0,context=system_u:object_r:public_content_t:s0 0 0

Поиск в монтировании (8) для параметров selinux

настройка пользователя ftp:

# getent passwd ftp
ftp:x:14:50:FTP User:/repo:/sbin/nologin
-121--111881-

Прежде всего, там; нет необходимости в цикле, поиск может сделать все это сам. Условия можно отменить с помощью ! или -нет флагов. Вы также не хотите -o , так как это означает «найти файлы/диры, имя которых не является foobar или не является doobar». Все будет найдено, так как одно или другое условие всегда будет верным ( foobar соответствует «не doobar» и doobar соответствует «не foobar»). То, что вы хотели, это что-то вроде:

find /path/to/parent/dirs/* -type d ! -name "*foobar*" ! -name "*doobar*" -delete

или

find /path/to/parent/dirs/* -type -d -not -name "*foobar*" -not -name "*doobar*" -delete

Вы могли бы, если хотите, тоже сделать это в оболочке. Например, с bash :

for i in /path/to/parent/dirs/*/; do 
    [[ "$i" =~ 'foobar' || "$i" =~ 'doobar' ]] || rm -rf "$i"; 
done

я не уверен в деталях, и у меня нет мака для тестирования этого, но похоже, что поиск OSX не позволит вам удалить каталоги. Я верю (но не уверен), что это то, что делает этот код :

/* Potentially unsafe - do not accept relative paths whatsoever */
if (strchr(entry->fts_accpath, '/') != NULL)
    errx(1, "-delete: %s: relative path potentially not safe",
        entry->fts_accpath);

Один из способов обойти это - использовать -exec вместо этого:

find /path/to/parent/dirs/ -type d ! -name "*foobar*" ! -name "*doobar*"  \
    -exec rm -rf {} +

Все эти команды удалят вещи. Проверьте их перед использованием!

2
27.01.2020, 23:36

Теги

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