How to Use Linux find Command to Locate Files Not Belonging to a Specific Group


3 views

When administering Linux systems, you'll often need to identify files that don't belong to a particular group. This is crucial for security audits, permission troubleshooting, or system maintenance tasks.

The find command supports logical negation through the ! operator (also available as -not for better readability). Here's the basic syntax:

find [path] ! -group [groupname]

To find files in /home not belonging to the 'test' group:

find /home ! -group test

Combine with other conditions to find executable files:

find /var/www -type f ! -group www-data -perm /u=x,g=x,o=x

Combine multiple conditions for precise searches:

find / -type f ! -group root ! -group sys -size +1M -exec ls -l {} \;

This finds large files not owned by either root or sys groups.

For large filesystems, add -xdev to prevent crossing mount points:

find / -xdev ! -group docker -print

You can pipe find results through other commands:

find /opt | xargs ls -ld | grep -v " test "

Though this is less efficient than using find's built-in negation.


When managing file permissions in Linux, system administrators often need to identify files that don't belong to specific groups. While the find command's -group option helps locate files belonging to a group, finding the inverse requires a different approach.

The correct way to find files not belonging to group "test" in /home directory:

find /home ! -group test -ls

Key components:

  • ! - The logical NOT operator
  • -group test - Matches files owned by group "test"
  • -ls - Provides detailed listing (optional)

Basic File Search

find /var/www ! -group www-data -type f

This finds all regular files in /var/www not owned by the www-data group.

Combining with Other Conditions

find /home/projects ! -group devteam -mtime +30 -exec ls -ld {} \;

Locates files older than 30 days not belonging to "devteam" group and displays detailed info.

Finding Directories Only

find /opt ! -group admin -type d -perm 775

Searches for directories with 775 permissions not owned by "admin" group.

For large directory trees, these optimizations help:

find /bigfs -xdev ! -group backup -print0 | xargs -0 ls -l

The -xdev prevents crossing filesystem boundaries, and -print0/xargs -0 handle spaces in filenames.

For complex scenarios, consider these methods:

# Using GNU find's -not operator
find . -not -group developers

# Combining with -nogroup to find files without valid group
find /tmp $! -group tempusers -o -nogroup$