Найти ищет только первую совпадающую запись

Se cierran al terminar. El shell creará 3 descriptores de archivo 0,1,2 para cada comando que ejecute. Estos son solo números, los números se reutilizan. El shell cerrará los archivos antes de re -usando los descriptores.

Los descriptores de archivo también se pasan a otros procesos. Y si tiene un proceso en segundo plano, seguirá teniendo descriptores de archivo.

El ejemplo utiliza 3>&1, lo que significa que el descriptor de archivo 3 hace referencia al archivo al que se refiere actualmente el descriptor 1.

0
01.07.2019, 21:13
2 ответа

Вы должны использовать команду head, подключив findтаким образом:find /foo/*/searched_folder/bar -maxdepth 0 -type d | head -n 1. Это даст вам только первый результат.

-1
28.01.2020, 05:04

Чтобы найти все имена, соответствующие шаблону /projekte/*/3140/software/software.git/, вы можете выполнить

set -- /projekte/*/3140/software/software.git/

Имена затем доступны в параметрах положения:

for gitdir do
    printf 'Found directory %s\n' "$gitdir"
done

или просто

printf 'Found directory %s\n' "$@"

Это напечатает имена найденных каталогов. Если какое-либо имя является символической ссылкой на каталог, то эта символическая ссылка будет пройдена.

Если вам нужно присвоить их именованному массиву, например.bash:

set -- /projekte/*/3140/software/software.git/
SORCE_ARRAY=( "$@" )

или просто

SORCE_ARRAY=( /projekte/*/3140/software/software.git/ )

Это предпочтительнее, чем расширение подстановки команд, поскольку подстановка команд не сохраняет пробелы в именах файлов.

Единственная проблема заключается в том, что шаблон не соответствует ничему , и в этом случае шаблон останется нераскрытым. Чтобы несоответствующий шаблон -не расширялся до нуля, используйте shopt -s nullglobв оболочке bash.

0
28.01.2020, 05:04

Теги

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