Bash脚本 - 按用户输入查找文件

时间:2013-12-08 20:07:42

标签: bash find

我正在尝试编译一个非常简单的bash脚本,它将执行以下操作(到目前为止,我所使用的脚本似乎根本不起作用,因此我不会浪费时间来放置此脚本你可以看一下)

我需要它来按名字查找文件。我需要脚本来获取用户输入并搜索.waste目录以查找匹配项,如果文件夹为空,我需要回显#34;未找到匹配项,因为文件夹为空!&#34 ;,并且通常无法找到匹配的简单"找不到匹配。"

我已定义:target=/home/user/bin/.waste

3 个答案:

答案 0 :(得分:1)

您可以使用内置的find命令执行此操作

find /path/to/your/.waste -name 'filename.*' -print

或者,您可以将其设置为.bash_profile

中的功能
searchwaste() {
  find /path/to/your/.waste -name "$1" -print
}

请注意,$1周围有引号。这将允许您进行文件通配。

searchwaste "*.txt"

上述命令会在.waste目录中搜索任何.txt个文件

答案 1 :(得分:0)

在这里,非常简单的脚本:

#!/usr/bin/env bash

target=/home/user/bin/.waste

if [ ! "$(ls -A $target)" ]; then
    echo -e "Directory $target is empty"
    exit 0
fi

found=0
while read line; do
    found=$[found+1]
    echo -e "Found: $line"
done < <(find "$target" -iname "*$1*" )

if [[ "$found" == "0" ]]; then
    echo -e "No match for '$1'"
else
    echo -e "Total: $found elements"
fi

顺便说一下。在* nix世界中没有文件夹,但有目录:)

答案 2 :(得分:0)

这是一个解决方案。

#!/bin/bash

target="/home/user/bin/.waste"

read name

output=$( find "$target" -name "$name" 2> /dev/null )

if [[ -n "$output" ]]; then
    echo "$output"
else
    echo "No match found"
fi