Linux/Unix Find命令避免权限被拒绝的消息
当我输入find . -type d -name" foo"
命令我得到"权限被拒绝"错误消息。
如何排除Linux或Unix等操作系统下的find命令发出的所有权限被拒绝消息?
find命令用于在Linux或Unix之类的操作系统上查找文件。
find命令将搜索目录以匹配提供的搜索条件。
您可以通过 类型,名称,所有者,组,日期,权限等搜索文件。
默认情况下,查找将为您搜索所有子目录。
查找命令基本语法
语法是:查找到处看的标准动作find/dir/to/search -name filetosearch find/dir/to/search -name" * .c" find/home/theitroad/project/-name" * py" -print
在此示例中,find将在/tmp目录中搜索名为data * .txt的任何文件并显示其路径名:
find /path/to/dir -name "pattern" -print find /tmp -iname "data*.txt"
或者
cd /tmp find . -iname "data*.txt" -print
输出示例:
"查找"将显示您没有读取权限的每个目录的错误消息。
如何修复查找命令权限被拒绝的消息
在以上示例中,我没有vmware-root和orbit-Debian-gdm目录的读取权限。
为避免此问题,请尝试以下语法:
## redirect error spam message to /dev/null ## find where-to-look criteria action 2>/dev/null find . -iname "data*.txt" -print 2>/dev/null
未经许可,输出示例被find命令拒绝垃圾邮件:
./rtzip/data005.txt ./rtzip/data001.txt ./rtzip/data004.txt ./rtzip/data003.txt ./rtzip/data002.txt ./rtzip/data008.txt ./rtzip/data006.txt ./rtzip/data007.txt ./rtzip/data009.txt
如何运作?
find命令末尾的2>/dev/null
告诉您的shell将错误消息(FD#2)重定向到/dev/null,因此您不必在屏幕上看到它们。
使用/dev/null从程序/命令发送任何不需要的输出。
写入/dev/null特殊文件中的所有数据都会被系统丢弃。
要将标准错误重定向到/dev/null并将文件列表存储到output.txt,请键入:
## redirect error spam to /dev/null ## find . -iname "data*.txt" -print 2>/dev/null > output.txt cat output.txt
从Linux上的find命令排除所有权限被拒绝的消息
以下命令存在一个问题。
它将筛选出find命令创建的所有错误消息,而不仅仅是权限被拒绝的错误消息:
find / -name foo 2>/dev/null find / -type d -name bar 2>/dev/null
为了避免这种情况,请在Linux或类似Unix的系统上尝试使用以下find命令和grep命令:
find / -name foo 2>&1 | grep -v "Permission denied" find / -type d -name bar 2>&1 | grep -v "Permission denied"
简而言之,在基于Linux或Unix的系统中运行find时,应使用以下语法跳过权限被拒绝的错误消息:
find /path/to/dir -name "search-patter" 2>&1 | grep -v "Permission denied" find /etc -name "x*.conf" 2>&1 | grep -v "Permission denied"
要将输出存储到文件中,请运行:
find /path/to/dir -name "search-patter" 2>&1 | grep -v "Permission denied" > output-file find /etc -name "x*.conf" 2>&1 | grep -v "Permission denied" > output.txt
使用cat命令显示output.txt:
cat output.txt
在上面的示例中,我们使用find命令和grep命令一起过滤掉权限被拒绝的错误消息。