CodePrairie .NET

South Dakota .NET User Group


Using the find command to find non executable files

I had a bunch of dll's I had checked out of a subversion repo that needed to have the execute bit set on them.

Enter the find command.

I have never had a great grasp on how to use find, but finally my laziness got the best of me such that I not only figured out how to use it to find the files I wanted, but also how to send them through xargs to make the change.

So here's the command I used:

find . -name '*.dll' ! -perm -a+x -print | xargs chmod +x

And here's the breakdown of the arguments . Is the directory we start our search from -name Says that the next argument is the name of the file we are searching for '*.dll' Is the pattern of the file we are looking for. In this case we are looking for *.dll or any file that ends with a .dll extension ! Says to negate the next argument -perm Says that the next argument will be some type of expression that qualifies the file based on its permissions -a+x There are multiple parts to this. The first - says that any permissions can match, if that wasn't there then the match would need to be exact? a+x (see man chmod(1)) is a way to specify permissions. It goes [user or group][operator][permission] so in this case it says Angelll(user, group, owner) [+]have e[x]ecute -print To be honest I'm not sure why this is needed, but all the examples I found with find and xargs seemed to use it

Then the point of xargs is to take the output of the previous command and pass it as input to the command (in this case chmod +x)


No Comments

Leave a Comment

Powered by Community Server (Commercial Edition), by Telligent Systems