Contents

在Linux中查找不属于特定用户的文件

1. 概述

find 命令是用于搜索文件的常用 Linux 命令。使用此命令,我们可以按文件名、类型和所有者等各种属性搜索文件。

在这个快速教程中,我们将学习允许我们搜索不属于特定用户的文件的 Linux 命令。

2. 我们的例子

为了更清楚地解释如何查找不属于用户的文件,让我们首先创建一个包含一些子目录和文件的目录。

我们将使用 带有选项*-upf*的tree 命令在目录结构中打印我们的示例:

$ tree -upf
.
├── [drwxr--r-- guest   ]  ./guest_dir
│   └── [-rw-r--r-- guest   ]  ./guest_dir/my_file.txt
├── [-rw-r--r-- guest   ]  ./guest_file.png
├── [-rw-r--r-- kent    ]  ./kent_file.txt
└── [-rw-r--r-- root    ]  ./root_file.doc
1 directory, 4 files

让我们介绍一下我们传递给tree的三个选项。 我们让tree命令打印权限标志 ( p )、文件所有者 ( u ) 和完整路径前缀 ( f )。

在我们的示例目录下,文件和目录属于三个不同的用户:rootkentguest

现在让我们讨论如何搜索不属于用户的文件。

3. 按(或不按)特定用户查找文件

如果我们想查找某个用户拥有的文件,我们可以使用 find命令的*-user USERNAME* 测试。假设我们需要查找用户 guest拥有的所有文件:

$ find . -user guest
./guest_dir
./guest_dir/my_file.txt
./guest_file.png

如上面的输出所示,已列出用户guest拥有的所有目录和文件。

要搜索不属于用户的文件,我们需要在上面的搜索中否定测试。find 命令允许我们添加“ !” 用于否定测试前面的测试表达式的字符。

现在,让我们在示例目录下查找所有不属于用户guest的文件:

$ find . ! -user guest
.
./root_file.doc
./kent_file.txt

很好,我们的问题已经解决了。

除了*-user测试,我们还可以使用“ ! ” 表达式与find*命令中的其他测试。

例如,以下命令将查找文件名与给定模式 *.txt 不匹配的所有文件:

$ find . ! -name *.txt
.
./guest_file.png
./root_file.doc
./guest_dir