У меня есть список текстовых файлов в каталоге, который я хочу найти с терминала . Чтобы не заставлять себя слишком много думать, я хочу иметь возможность искать несколько слов, например искать один, два, три
, если есть файл, в имени которого есть одно или несколько таких слов, вернуть его. Это операторы if, которые у меня есть:
snip-list() {
for filename in ~/notes/*; do
file=`basename "$filename"`
fs=${file%.*}
if [[ $fs =~ $1 ]] && [[ $fs =~ $2 ]] && [[ $fs =~ $3 ]] && [[ $fs =~ $4 ]] && [[ $fs =~ $5 ]]; then
echo $fs
# exit
elif [[ $fs =~ $1 ]] && [[ $fs =~ $2 ]] && [[ $fs =~ $3 ]] && [[ $fs =~ $4 ]]; then
echo $fs
# exit
elif [[ $fs =~ $1 ]] && [[ $fs =~ $2 ]] && [[ $fs =~ $3 ]]; then
echo $fs
# exit
elif [[ $fs =~ $1 ]] && [[ $fs =~ $2 ]]; then
echo $fs
# exit
elif [[ $fs =~ $1 ]]; then
echo $fs
fi
done
}
Я буду добавлять файлы в этот каталог, поэтому, если я запущу этот оператор как есть, я получу столько результатов, что они будут бесполезны (по крайней мере, мне придется прокручивать наверх, чтобы увидеть первые результаты).
Если есть способ сделать так, чтобы «если пользователь искал 5 терминов и они что-то вернули, не выполняли остальные 4 условия
Я пробовал запускать exit
после каждого Мне нужно, чтобы окно терминала оставалось открытым.
Используйте return
вместо exit
для возврата из функции оболочки.
Если вы используете bash
или другую оболочку со встроенной справкой, введите help return
для получения подробной информации. В противном случае см. Справочную страницу вашей оболочки.