查找所有名为 temp 的文件

查找所有名为 temp 的文件

我应该查找所有名为temp.我会这样做吗:find . -name "temp"

然后我应该确保没有弹出错误消息我可以2>/dev/null在上一个命令的末尾添加 吗?

答案1

命令

find . -name temp

会找到所有名字那是temp。这包括各种文件,例如常规文件、目录、套接字、符号链接等。

如果你只想找到常规的文件,然后使用-type f测试:

find . -name temp -type f

要隐藏这可能引发的错误(通过尝试访问无法访问的目录):

find . -name temp -type f 2>/dev/null

即,将标准错误流重定向find/dev/null(丢弃所有错误)。

如果你想避免错误,即不隐藏错误,然后确保不要尝试进入您无权访问的目录。对于 GNU find,这可以方便地使用

find . -type d ! \( -readable -executable \) -prune -o -name temp -type f -print

-type d测试对于任何目录都是正确的,并且对于 GNU 来说,如果当前路径名引用了当前用户既不能执行又不能读取的内容,则find否定测试将为正确。-executable -readable一个目录是无障碍如果您可以执行它,并且您可以列出目录的内容(如果它也是可读的)。从搜索树中“修剪”目录-prune,即find不进入该目录。

-o是逻辑“或”运算。不使用时-o,默认-a为“AND”。指定的测试和操作以从左到右的方式进行评估。

最后-print打印出通过所有测试的所有路径名。

你愿意吗对找到的文件执行某些操作,然后通过 执行的操作来执行此操作find。例如,要删除它们,请添加-delete到命令末尾(或更改-print-delete)。要执行更通用的操作,您可能需要循环它们。你这样做使用

find . -type d ! \( -readable -executable \) -prune -o -name temp -type f \
    -exec sh -c '
        for pathname do
            # code that uses "$pathname" goes here
        done' sh {} +

也可以看看

相关内容