если Вы хотите искать полную древовидную попытку
find . -exec grep -n blah {} /; -ls
или делает подобный
find . -exec grep -n blah {} /; -print
Просто позвольте ему расшириться в правой стороне объявления массива:
list=(../smth*/) # grab the list
echo "${#list[@]}" # print array length
echo "${list[@]}" # print array elements
for file in "${list[@]}"; do echo "$file"; done # loop over the array
Обратите внимание что опция оболочки nullglob
потребности, которые будут установлены.
Это не установлено по умолчанию.
Это предотвращает ошибку в случае, если шарик (или один из нескольких шариков) не соответствует никакому имени.
Установите его в bash
с
shopt -s nullglob
или в zsh
с
setopt nullglob
Я хотел использовать стандартный ввод (конвейер )на случай, если результирующая команда превысит лимит длины командной строки. У меня сработала следующая команда:
echo "../smth*/*" "/etc/cron*/" | xargs -n1 -I{} bash -O nullglob -c "echo {}" | xargs -n1
или для списка глобусов:
cat huge_glob_list.txt | xargs -n1 -I{} bash -O nullglob -c "echo {}" | xargs -n1
unsetopt
и тот же параметр, как используется дляsetopt
. – manatwork 05.12.2015, 20:48