Как я могу использовать «find» в сценарии оболочки для поиска в текущем каталоге?

Я хочу, чтобы программа выглядела так:

read a
if[ find . name $a ]; then
  echo "You found the file"
else "You haven t found the file"
fi
1
задан 12 May 2015 в 20:10

2 ответа

Было ли что-нибудь найдено, find всегда возвращает true. Можно использовать grep, чтобы определить, нашел ли find что-то:

read -r a
if find . -maxdepth 1 -name "$a" -print -quit | grep -q . 
then
  echo "You found the file"
else 
  echo "You haven't found the file"
fi

Выход после первого соответствия (-print -quit) должен улучшить производительность, как Eliah отметил. Используйте -maxdepth 1 для ограничения результатов текущим каталогом - но затем find излишество для этого.

5
ответ дан 13 May 2015 в 06:10

Если не делают , имеют для использования эти find команда, с помощью test команда (или ее краткая форма [... ]), было бы легче, по моему скромному мнению. С test, эти e переключатель делает то, что Вы ищете.

#!/bin/bash
read -r a
if [[ -e $a ]]; then
    echo "You found the file"
else
    echo "You haven't found the file"
fi

, Но знать, что test только ищет файл в текущем каталоге, не в любых подкаталогах (благодаря EliahKagan для напоминания).

можно найти хороший обзор приблизительно test в хакеры Wiki

Bash
2
ответ дан 13 May 2015 в 06:10
  • 1
    Спасибо, но в тем временем мне удалось обновить через ОТУ. Да, u-d-f все еще не работают, и все еще показывает обновлению отказавшее сообщение, я мог бы дать ему попытку позже с инструкциями, которые Вы предоставили. – Stef01 22 September 2016 в 20:47

Другие вопросы по тегам:

Похожие вопросы: