如果find不为空,如何显示true

时间:2014-04-02 08:08:33

标签: linux bash

我对bash很新。我上周才开始学习。我正在尝试搜索文件名。 如果找到文件,如何显示消息?

这就是我所拥有的,但它一直在说'没有'

echo ' [Enter] a file name '    
read findFile

if [[ -n $(find /$HOME -type f -name "findFile") ]]
then
    echo 'yes'
else
    echo 'no'
fi

2 个答案:

答案 0 :(得分:5)

一些问题:

  1. 定义变量时使用var=read var,但使用$var时使用find
  2. 找到文件后没有理由继续搜索,所以执行以下操作,-quit -print找到单个文件后将#!/bin/bash echo ' [Enter] a file name ' read findFile if [[ -f $(find "$HOME" -type f -name "$findFile" -print -quit) ]]; then echo 'yes' else echo 'no' fi 作为-quit的结果返回{ {1}}

    -exit

    请注意,选项/将适用于GNU和FreeBSD操作系统(这意味着这在大多数情况下都有效),但是,例如,您需要在NetBSD上将其更改为$HOME。 您可以在Unix / Linux StackExchange中看到this answer,了解有关此选项的详细信息。

  3. 另请注意,根据Adaephon's comment,虽然{{1}}前面不需要{{1}},但它没有错,文件仍然可以找到。

答案 1 :(得分:1)

使用wc计算查找输出中的行数:

if [ $(find $HOME -type f -name "thisFile" 2> /dev/null | wc -l) -gt 0 ]; then
    echo 'yes'
else
    echo 'no'
fi

2> /dev/null部分隐藏了可能的错误消息。