Linux/Unix Find命令提示Permission denied报错
时间:2019-11-20 08:52:59 来源:igfitidea点击:
find命令用于在Linux或Unix之类的操作系统上查找文件。
find命令将搜索目录以匹配提供的搜索条件。
您可以通过类型,名称,所有者,组,日期,权限等来搜索文件。
默认情况下,find将为您搜索所有子目录。
如果目录或者子目录没有权限,Find命令将提示Permission denied报错。
我们可以过滤掉这些信息。
find命令基本语法
语法是:
find where-to-look criteria action find /dir/to/search -name filetosearch find /dir/to/search -name "*.c" find /home/theitroad/ -name "*.py" -print
例如,在/tmp目录中搜索名为data * .txt的文件并显示其路径名:
find /path/to/dir -name "pattern" -print find /tmp -iname "data*.txt"
或者
cd /tmp find . -iname "data*.txt" -print
如何过滤掉find时提示的permission denied信息
如果没有某个目录的读取权限,则会报错permission denied。
为避免此问题,可以使用以下语法:
## 将报错信息重定向到 /dev/null ## find where-to-look criteria action 2>/dev/null find . -iname "data*.txt" -print 2>/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命令的Permission denied信息
下面的命令存在一个问题。
它把所有错误消息都丢掉了,而不仅仅是Permission denied:
find / -name foo 2>/dev/null find / -type d -name bar 2>/dev/null
如果只是想剔除Permission denied信息, 则可以和grep命令配合使用:
find / -name foo 2>&1 | grep -v "Permission denied" find / -type d -name bar 2>&1 | grep -v "Permission denied"
所有,在基于Linux或Unix的系统中使用find时,应使用以下语法来过滤掉Permission denied错误:
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