2016-05-07 3 views
0

У меня есть ниже Баш сняли с распечатать project.json пути к файлам:сцепить два globbings файла в Баш

projectDirectories=./src/*/ 
projectJsonFiles=${projectDirectories%%/}/project.json 
for projectFilePath in $projectJsonFiles; do echo $projectFilePath; done 

, что дает мне этот выход:

./src/foo-aspnet-configuration/project.json 
./src/foo.Common/project.json 
./src/foo.bar.MongoDB/project.json 
./src/foo.bar/project.json 
./src/foo.bar.Queries/project.json 
./src/foo.Graph/project.json 
./src/foo-http-frontend/project.json 
./src/foo.Http.Model/project.json 
./src/foo.Infrastructure/project.json 
./src/foo.Search/project.json 

Что я хочу сделать, это перечислите файлы project.json под номером ./workers/*/, но я не уверен, как его объединить. Моя конечная цель, чтобы иметь возможность concatinate два globbings файла вместе, что-то вроде:

projectDirectories=./src/*/,./workers/*/ 
projectJsonFiles=${projectDirectories%%/}/project.json 
for projectFilePath in $projectJsonFiles; do echo $projectFilePath; done 

, который дал бы мне:

./src/foo-aspnet-configuration/project.json 
./src/foo.Common/project.json 
./src/foo.bar.MongoDB/project.json 
./src/foo.bar/project.json 
./src/foo.bar.Queries/project.json 
./src/foo.Graph/project.json 
./src/foo-http-frontend/project.json 
./src/foo.Http.Model/project.json 
./src/foo.Infrastructure/project.json 
./src/foo.Search/project.json 
./workers/foo.Sync.Common/project.json 
./workers/foo-sync-foobar/project.json 
./workers/foo-sync-bar/project.json 

но, очевидно, projectDirectories=./src/*/,./workers/*/ не работает. Любая идея, как это делается в bash?

+0

Удалить запятой. –

ответ

2

С GNU Баш 4:

printf -v projectDirectories "%s" ./src/*/ ./workers/*/ 
echo "$projectDirectories" 
+1

спасибо! Я думаю, что это должно быть 'printf -v projectDirectories '% s" ./src/*/ ./workers/*/'для работы в цикле for. – tugberk

1

Вы должны использовать массив, а не зависеть от путей файлов, не включая пробелы:

dirs=(./src/*/ ./workers/*/) 
for dir in "${dirs[@]}"; do 
    file=${dir}project.json; do 
    echo "$file" 
    done 
done 

 Смежные вопросы

  • Нет связанных вопросов^_^