2016-05-07 11 views
0

ich die unten bash stript haben project.json Dateipfade drucken:verketten zwei Datei globbings in bash

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

, die mir diese Ausgabe gibt:

./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 

Was ich will, ist auch tun listet die project.json Dateien unter ./workers/*/ Pfad auf, aber ich bin mir nicht sicher, wie ich es kombinieren soll. Mein Endziel ist in der Lage concatinate zwei Datei globbings zusammen zu sein, so etwas wie:

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

, die mir geben würde:

./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 

aber offensichtlich, projectDirectories=./src/*/,./workers/*/ funktioniert nicht. Irgendeine Idee, wie das in bash gemacht wird?

+0

das Komma entfernen. –

Antwort

2

Mit GNU bash 4:

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

danke! Ich denke, es sollte "printf -v projectDirectories"% s "./src/*/ ./workers/* /" sein, damit es in einer for-Schleife funktioniert. – tugberk

1

Sie einen Array verwenden sollen, anstatt hängen von Dateipfaden ohne Leerzeichen:

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