{"record":{"id":"0451accf6d503f1c","repo":"sharkdp/fd","slug":"is-not-a-recognized-group-name","errorCode":null,"errorMessage":"'{}' is not a recognized group name","messagePattern":"'(.+?)' is not a recognized group name","errorType":"validation","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"src/filter/owner.rs","lineNumber":53,"sourceCode":"            ));\n        }\n\n        let uid = Check::parse(fst, |s| {\n            if let Ok(uid) = s.parse() {\n                Ok(uid)\n            } else {\n                User::from_name(s)?\n                    .map(|user| user.uid.as_raw())\n                    .ok_or_else(|| anyhow!(\"'{}' is not a recognized user name\", s))\n            }\n        })?;\n        let gid = Check::parse(snd, |s| {\n            if let Ok(gid) = s.parse() {\n                Ok(gid)\n            } else {\n                Group::from_name(s)?\n                    .map(|group| group.gid.as_raw())\n                    .ok_or_else(|| anyhow!(\"'{}' is not a recognized group name\", s))\n            }\n        })?;\n\n        Ok(OwnerFilter { uid, gid })\n    }\n\n    /// If self is a no-op (ignore both uid and gid) then return `None`, otherwise wrap in a `Some`\n    pub fn filter_ignore(self) -> Option<Self> {\n        if self == Self::IGNORE {\n            None\n        } else {\n            Some(self)\n        }\n    }\n\n    pub fn matches(&self, md: &fs::Metadata) -> bool {\n        use std::os::unix::fs::MetadataExt;\n","sourceCodeStart":35,"sourceCodeEnd":71,"githubUrl":"https://github.com/sharkdp/fd/blob/ee20f426ddf338ac7ead5c5f00ea49258005caaf/src/filter/owner.rs#L35-L71","documentation":"The gid portion of --owner (after the colon) is parsed as a number first; on failure fd looks it up via nix::unistd::Group::from_name and errors at filter/owner.rs:53 when no matching group exists. Leading '!' is honored for negation.","triggerScenarios":"Passing `fd --owner :nonexistentgroup`, `fd --owner alice:devs` where 'devs' is not a group, or a group name that lives in a nameservice fd cannot query.","commonSituations":"Typos in group names; groups removed or renamed; containers/distros with different group databases; mistaking a username for a group name.","solutions":["Confirm the group: `getent group <name>`.","Use the numeric gid: `fd --owner :1000`.","If you meant a user, put it before the colon: `fd --owner alice` (not `:alice`)."],"exampleFix":"# before\nfd --owner :devs\n\n# after (verify group or use gid)\ngetent group devs || fd --owner :1000","handlingStrategy":"validation","validationCode":"ensure_group() {\n  local g=\"$1\"\n  if getent group \"$g\" >/dev/null 2>&1; then\n    fd --owner \":$g\"\n  else\n    fd --owner \":$(id -g)\"\n  fi\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Resolve group names with `getent group` before use.","Prefer numeric gids when portability matters.","Remember the group goes after the colon; a bare name is treated as a uid."],"tags":["owner-filter","parsing","unix","group-lookup"],"backgroundTag":null,"analyzedSha":"ee20f426ddf338ac7ead5c5f00ea49258005caaf","analyzedAt":"2026-08-09T08:21:40.573Z","contentChangedAt":"2026-08-09T08:21:40.573Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}