Grep 搜索不存在的文件

gpu*_*guy 1 grep

我想在目录中搜索文本“启动内核”,所以我这样做了:

 [root@xilinx petalinux-v2013.10-final]# grep -r "Starting kernel"  
grep: warning: tools/packagemanager/lib/i686: recursive directory loop

grep: Xilinx-ZC702-14.7/build/linux/rootfs/targetroot/etc/init.d/functions: No such file or directory
grep: Xilinx-ZC702-14.7/build/linux/rootfs/targetroot/etc/rcS.d/S10flashdev: No such file or directory
grep: Xilinx-ZC702-14.7/build/linux/rootfs/targetroot/mnt/net: No such file or directory
grep: Xilinx-ZC702-14.7/build/linux/rootfs/targetroot/mnt/cf: No such file or directory
Binary file Xilinx-ZC702-14.7/pre-built/linux/images/u-boot.elf matches
Binary file Xilinx-ZC702-14.7/pre-built/linux/images/BOOT.BIN matches
Binary file Xilinx-ZC702-14.7/pre-built/linux/images/output.bin matches
Run Code Online (Sandbox Code Playgroud)

为什么要搜索不存在的文件?为什么我会收到这些“没有这样的文件或目录”消息?

另外,为什么当我给它 ASCII 字符时它会搜索二进制文件?二进制文件可以包含像我这样的字符串吗?

Ant*_*hon 6

这很可能是因为这些链接指向不存在的文件。

您应该查看其中一个文件,例如:

ls -l Xilinx-ZC702-14.7/build/linux/rootfs/targetroot/etc/init.d/functions
Run Code Online (Sandbox Code Playgroud)

然后再次ls在它指向的地方做。

你也可以这样做:

ls -L Xilinx-ZC702-14.7/build/linux/rootfs/targetroot/etc/init.d/functions
Run Code Online (Sandbox Code Playgroud)

这也可能会让你cannot access: ....受益。


dev*_*ull 5

grep,默认情况下,不会忽略不存在或不可读的文件。您需要提供-sor--no-messages选项才能grep忽略这些。引自man grep

   -s, --no-messages
          Suppress  error  messages about nonexistent or unreadable files.
          Portability note: unlike GNU grep, 7th Edition Unix grep did not
          conform to POSIX, because it lacked -q and its -s option behaved
          like GNU grep's -q option.  USG-style grep also  lacked  -q  but
          its  -s  option  behaved  like GNU grep.  Portable shell scripts
          should avoid both -q and -s and  should  redirect  standard  and
          error output to /dev/null instead.  (-s is specified by POSIX.)
Run Code Online (Sandbox Code Playgroud)