Sam*_*007 15 command-line find
我想知道,有效使用 find 命令的最佳方法是什么?
我通常使用,find [filename] [dir]这给了我一长串文件名,它们都与我的搜索没有任何关系。
我只需要在特定目录中找到一个文件。那命令是什么?
roa*_*dmr 25
您通常会告诉 find 从哪里开始搜索,以及要查找的内容。因此,搜索路径的语法和您实际尝试查找的内容是不同的。
对于您提到的用例,假设您要在以下位置找到passwd文件/etc:
find /etc/ -name passwd
Run Code Online (Sandbox Code Playgroud)
你是说“从等开始,寻找一个名称为passwd
如果您不指定标准(或 find 说法中的“选项”),则 find 所做的是,它从您指定的路径(或路径)开始,并递归地查找下面的所有文件和目录。因此,选项“过滤”这些文件以缩小您要查找的范围。
在文件系统中的任何位置查找所有 JPG 文件:
find / -name "*jpg"
Run Code Online (Sandbox Code Playgroud)
建议在您的选项中使用引号,否则 shell 扩展会导致您头疼。
在文档或下载中查找任何 pdf 文件,无论大小写:
find Documents/ Downloads/ -iname "*pdf"
Run Code Online (Sandbox Code Playgroud)
如果您这样做man find并向下滚动到 TESTS,您将找到 find 可用于缩小搜索范围的所有“标准”。您可以搜索具有特定文件名、由特定用户或组拥有、具有特定文件权限、属于特定类型的文件(例如,-type d将仅查找目录,而-type f将仅查找纯文件,不包括目录)、更新或更旧的文件特定天数(或分钟数)、空文件、可执行文件等。
在 find 的手册页中,您还会找到一个名为 ACTIONS 的部分,这些部分可以跟在条件之后,并且将由匹配所有条件的任何文件触发。所以你可以find做一些事情,比如删除它找到的文件,对它们执行任意命令,等等。
但当然基本语法仍然存在:
find [starting path(s)] [conditions or criteria]
Run Code Online (Sandbox Code Playgroud)