How to search for files with a specific permission
How can I search for files that have a specific permission. For example, I have 10000 files and I want to find the ones that have the READ ONLY flag. In another case I want to search for another that has a particular owner. Or in another to see the files that are READ ONLY and EXECUTABLE.
Solution 1:
It's probably easiest to use the find
command, which allows you to recursively search through the directory tree. For example, if you particularly wanted to find files that were read-only, you could type
find <specify location> -type f -perm -444
For files belonging to a particular user you could use
find <location> -type f -user mike
For files executable (for all) you could use
find <location> -type f -perm -777
For those that are executable and read-only for all you would use 555 in place of 777 in the example above. You can also search for files that belong to a group by substituting -user mike
for -group mike
.
To negate the search terms and so search for the exact opposite, you can use an exclamation mark like this:
find <location> -type f ! -perm -444
Note: Specifying a dash before the permissions (e.g. -perm -444
) means that all files that have a read only flag will be found and not just those that are 444; to search for 444 exactly and only that, simply remove the dash (e.g. -perm 444
).
Note2: Combinations of permissions can be sought as well using -a
for and and -o
for or; for example to find exactly these permissions, type:
find <location> -type f -perm 744 -o -perm 666
Directories can be searched for with -type d
.
See man find
for the other available permutations.