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

标签 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

最佳答案

几个问题:

  1. 定义变量时使用var=read var,使用时使用$var
  2. 没有理由在找到一个文件后继续搜索,所以做类似下面的事情,其中​​ find 将在找到一个文件后 -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 将在 GNU 和 FreeBSD 操作系统上工作(这意味着这在大多数情况下都可以工作),但是例如,您需要将其更改为 -在 NetBSD 上退出。 可以看到this answer从 Unix/Linux StackExchange 获取有关此选项的详细信息。

另请注意,根据 Adaephon's comment , 虽然 $HOME 前面不需要 / ,但没有错,文件仍然会被找到。

关于linux - 如果 find 不为空,如何显示 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22805204/

相关文章:

linux - centos无法删除目录

linux - Gnuplot,如何计算我的 gnuplot 脚本的矩阵输入的行和列?

regex - 如何从差异比较中查找和排除字符串正则表达式文字?

linux - 如何使用 R 将 Raspberry Pi 中存储的文件直接读取到 Window

bash - 如何从 GHC/Cabal/Stack 获取错误和警告计数?

linux - 如何在不登录服务器的情况下重启sshd服务?

android - 如何从 android Activity 运行 bash 脚本

bash - 已在运行的 session 上的 matlab 命令(来自 bash/命令行)

bash - 如何在 Bash 脚本中包含计时器?

bash - 如何检查参数是否提供给 bash 脚本