我有以下终端命令:
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