#shell #terminal #wildcard #github-actions
#оболочка #терминал #подстановочный знак #github-действия
Вопрос:
У меня есть файловая структура, подобная:
- a.txt
- x/
- b.txt
- y/
- c.txt
- yz/
- d.txt
Теперь я хочу просмотреть все файлы .txt. Насколько я знаю, for file in **/*.txt
должна выполнять эту работу, верно? По крайней мере, это работает в моем zsh. Но мое действие GitHub игнорирует файл a.txt на верхнем уровне. Есть идеи, как это решить? Или есть другой простой способ сделать это с помощью GH actions?
Комментарии:
1. Насколько я знаю, файл в **/*.txt должен выполнять эту работу, верно? Нет. В некоторых оболочках это есть, в некоторых нет. Если вы не добавите определенный тег оболочки, как мы должны ответить на это?
2.
**/*.txt
включает символ/
, поэтому результат должен включать/
. Просто сделайте*.txt **/*.txt
a9nd, если вы работаете с bash, вы должны включить**
расширение
Ответ №1:
**
это расширение, которое поддерживают не все оболочки. Используйте find
.
find . -type f -name '*.txt' |
while IFS= read -r file; do
# do something with file
done
Ответ №2:
Как упоминалось @KamilCuk, не все оболочки поддерживают **
расширения одинаково. В моем случае GitHub Actions использует bash
по умолчанию и bash
(по-видимому) не включает файл на корневом уровне для **/*
(в отличие zsh
от, например,)
В итоге я получил for file in *.txt **/*.txt