Date: Sun, 13 Mar 2005 02:15:00 -0800 From: "Loren M. Lang" <lorenl@alzatex.com> To: Giorgos Keramidas <keramida@ceid.upatras.gr> Cc: Fafa Diliha Romanova <fteg@london.com> Subject: Re: chmod equivalent to find commands Message-ID: <20050313101500.GE18080@alzatex.com> In-Reply-To: <20050312195302.GA77874@gothmog.gr> References: <20050312115359.C14EF4BE6D@ws1-1.us4.outblaze.com> <42330B26.2040508@haystacks.org> <20050312195302.GA77874@gothmog.gr>
next in thread | previous in thread | raw e-mail | index | archive | help
--VUDLurXRWRKrGuMn Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Sat, Mar 12, 2005 at 09:53:02PM +0200, Giorgos Keramidas wrote: > On 2005-03-12 10:30, Eric McCoy <emccoy@haystacks.org> wrote: > >Fafa Diliha Romanova wrote: > >> hello. > >> > >> i know there's an equivalent to these two find commands that > >> can be summed up in one chmod command: > >> > >> find . -type d -exec chmod 755 {} \; > >> find . -type f -exec chmod 644 {} \; >=20 > Uhm, why? Even if that were possible, isn't clarity more important that > stuffing as many actions as possible in one line? >=20 > What you list above is similar to the way I use for changing the > permissions of files/dirs and it works all the time. >=20 > There's no reason to try to write one, long, complicated command just > for the sake of making it one command instead of two. Otherwise, you > may as well do more complex stuff like: Summing it up into one command does not neccessarily mean it's longer or more complicated. I use the following command all the time to fix permissions similar to what he seems to be doing. Though it's not technically equivalent, it's probably all he needs. chmod -R u=3DrwX,go=3DrX . My umask of 022 simplifies the command to the following: chmod -R =3DrwX . >=20 > find . | while read line; do > mode=3D'' > [ -d "${line}" ] && mode=3D0755 > [ -f "${line}" ] && mode=3D0644 >=20 > [ -n "${mode}" ] && echo "chmod ${mode} \"${line}\"" > done | sh >=20 > But this is getting quickly very difficult to remember easily and repeat > consistently every time you want to do something similar :) >=20 > >> what would be the best solution here? > > > > I would do it the same way you do, but with xargs instead: > > > > find . -type X -print0 | xargs -0 chmod XXX >=20 > This is an excellent way to do this, IMHO. >=20 > > If you were feeling crazy and use sh: > > > > find . | while read path; do \ > > if [ -d "$path" ]; then chmod 755; > > else chmod 644; fi; \ > > done >=20 > I guess you meant to write: >=20 > find . | while read path; do \ > if [ -d "$path" ]; then chmod 755 "${path}"; > else chmod 644 "${path}"; fi; \ > done >=20 > Otherwise, many chmod failures are the only result. >=20 > But this has a minor buglet. It will change everything that is not a > directory to mode 0644. This mode is ok for files, but it may not be ok > (or it may even fail) for other stuff (symbolic links, for instance). >=20 > - Giorgos >=20 > _______________________________________________ > freebsd-questions@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-questions > To unsubscribe, send any mail to "freebsd-questions-unsubscribe@freebsd.o= rg" --=20 I sense much NT in you. NT leads to Bluescreen. Bluescreen leads to downtime. Downtime leads to suffering. NT is the path to the darkside. Powerful Unix is. Public Key: ftp://ftp.tallye.com/pub/lorenl_pubkey.asc Fingerprint: CEE1 AAE2 F66C 59B5 34CA C415 6D35 E847 0118 A3D2 =20 --VUDLurXRWRKrGuMn Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQFCNBKkbTXoRwEYo9IRAgIBAJ9k9Q6M632ClfESlmQKoD2nWM8ApgCeJY0f UUVl6DqB3LWY/Idsijhg41U= =FKF7 -----END PGP SIGNATURE----- --VUDLurXRWRKrGuMn--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050313101500.GE18080>