我对bash很新。我上周才开始学习。我正在尝试搜索文件名。 如果找到文件,如何显示消息?
这就是我所拥有的,但它一直在说'没有'
echo ' [Enter] a file name '
read findFile
if [[ -n $(find /$HOME -type f -name "findFile") ]]
then
echo 'yes'
else
echo 'no'
fi
答案 0 :(得分:5)
一些问题:
var=
或read var
,但使用$var
时使用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
的结果返回{ {1}}
-exit
请注意,选项/
将适用于GNU和FreeBSD操作系统(这意味着这在大多数情况下都有效),但是,例如,您需要在NetBSD上将其更改为$HOME
。
您可以在Unix / Linux StackExchange中看到this answer,了解有关此选项的详细信息。
另请注意,根据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
部分隐藏了可能的错误消息。