From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: "Dmitry V. Levin" To: ALT Linux Spring mailing list Subject: Re: [mdk-re] [JT] (find + grep) && exceptions Message-ID: <20020219084424.GB29316@ldv.office.alt-linux.org> Mail-Followup-To: "Dmitry V. Levin" , ALT Linux Spring mailing list References: <20020218215807.GA3096@ifirst.ru> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="qlTNgmc+xy1dBmNv" Content-Disposition: inline In-Reply-To: <20020218215807.GA3096@ifirst.ru> X-fingerprint: 9658 398D 181B 1200 8FC5 26B8 F6F8 846B C1E2 3429 Sender: mandrake-russian-admin@altlinux.ru Errors-To: mandrake-russian-admin@altlinux.ru X-BeenThere: mandrake-russian@altlinux.ru X-Mailman-Version: 2.0 Precedence: bulk Reply-To: mandrake-russian@altlinux.ru List-Help: List-Post: List-Subscribe: , List-Id: Linux-Mandrake RE / ALT Linux discussion list List-Unsubscribe: , List-Archive: Date: Tue Feb 19 11:37:34 2002 X-Original-Date: Tue, 19 Feb 2002 11:44:24 +0300 Archived-At: List-Archive: List-Post: --qlTNgmc+xy1dBmNv Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit On Tue, Feb 19, 2002 at 12:58:07AM +0300, Artem K. Jouravsky wrote: > Вот мучает меня уже несколько дней (не сильно, просто как комар) такое > желание: есть куча пользователей-разработчиков, которые обожают права 777 > на файлы в своей директории. Хочется сделать им сюрприз, ибо давно > предупреждены. Но! Есть файлы (или по крайней мере, папки), на которые > действительно нужны права на запись для all. Делаю такую конструкцию: > > $find /path/to -type f -perm -o=w -print0|xargs -0 chmod 644 {} ';' > > Хочется вставить посредине что-то вроде grep -v exceptions, > где то что grep получит из а exceptions - список > исключений. Но вот проблема - xargs -0 grep exceptions даст совсем не то > что мне нужно... > Можно сделать подлиннее, но не хочется. Есть способ это сделать коротко? find /path/to -type f -perm -o=w -print0 |xargs -r0 /run/my/script Соответственно, скрипт этот может делать нечто вроде for f in "$@"; do [ -f "$f" ] || continue p=$(quote_regexp "$f") grep -qs '^$p$' /file/with/exceptions && continue chmod 644 "$f" done quote_regexp - это функция, экранирующая метасимволы регулярных выражений. Ее реализация - простое, но полезное упражнение. В любом случае, абсолютно корректное решение этой задачи с помощью grep вряд ли возможно ввиду того, что в именах файлов могут присутствовать переводы строки. Regards, Dmitry +-------------------------------------------------------------------------+ Dmitry V. Levin mailto://ldv@alt-linux.org ALT Linux Team http://www.altlinux.com/ Fandra Project http://www.fandra.org/ +-------------------------------------------------------------------------+ UNIX is user friendly. It's just very selective about who its friends are. --qlTNgmc+xy1dBmNv Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.6 (GNU/Linux) Comment: For info see http://www.gnupg.org iD8DBQE8chBo9viEa8HiNCkRAs6dAJ4vzcCW/9GZt4XSN8yaS8PB3QOUMwCggKuH wWVTAUbhE/oztJYj+PxplIM= =FYlC -----END PGP SIGNATURE----- --qlTNgmc+xy1dBmNv--