Linux find 命令返回不属于指定用户的文件和文件所有者

Linux find 命令返回不属于指定用户的文件和文件所有者

我有以下终端命令:

find /home/not_this/ \! -user not_this_user_account

目标是找到所有不属于指定用户的文件和目录,该版本的find命令运行良好。

不过,我真的很想归还返回的文件和目录的所有者。

所以:

/home/not_this/test1.html
/home/not_this/test2.html

将返回此内容:

someone_else /home/not_this/test1.html
someone_else /home/not_this/test2.html

或者返回这个:

/home/not_this/test1.html someone_else
/home/not_this/test2.html someone_else

如何使用find命令返回不属于指定用户的文件/目录这些文件/目录的所有者?

因为我不认为自己精通 Linux 终端,所以我同意使用不同的命令,只要它返回所需的结果并且不需要某种特殊条件(例如,下载和安装每个 Linux 发行版上都没有的东西)。

答案1

大多数find实现允许你使用该函数格式化其输出printf
请咨询你自己的系统man find实际支持哪些格式选项。

使用-printf '%u\t%p\n'会给我一个 TAB ( \t) 分隔的列表,其中包含用户名%u (或无法解析为用户名的 UID 号)和包含路径的完整文件名%p。需要换行符\n,否则您不会每行看到一个项目。

find /home/not_this/ \! -user not_this_user_account -printf '%u\t%p\n' 

给出如下列表:

diya    /home/bla
diya    /home/bla/file-1
diya    /home/blaa
diya    /home/blaa/file-2
diya    /home/blaa/images & screenshots
unbound /home/blaa/images & screenshots/Screenshot 2022-11-03 11:02.PNG
diya    /home/blaa/images & screenshots/image-2.jpg
diya    /home/blaa/images & screenshots/image-1.jpg
diya    /home/blaa/file-3
diya    /home/blaa/1
diya    /home/blaa/1/file.txt

相关内容