2016-05-26 8 views
1

で作成、フォルダとファイル私は50個のフォルダを作成する必要があり、それぞれ第五フォルダはそれに2つの* 2ファイルを持っていなければならないのbashスクリプト

folder1 
. 
. 
folder5 - has 2 files in it 
folder 6 
. 
. 
folder 10 - has 4 files in it 
. 
. 
folder 15 - has 8 files in it 

ここでは私のコードです:

#!/bin/bash 


n=1 
declare -i countFolder 

for ((countFolder = 1; countFolder <= 50; countFolder++)) 
do 
    mkdir Folder$countFolder 
done 

for ((countFolder = 5; countFolder <= 50; countFolder = countFolder+5)) 
do 

    let "n = n * 2" 

    for ((f = 0; f < n; f++)) do 
    cd Folder$countFolder && touch File$f.txt 
    done 
done 
+3

なぜこの質問はpythonタグでマークされていますか? – SivNiz

答えて

2

この問題は、ディレクトリにcdがありますが、決してcdには届かないことです。

これを修正する最も簡単な方法は、cdのまわりにかっこを追加することです。

for ((f = 0; f < n; f++)) do 
    (cd Folder$countFolder && touch File$f.txt) 
done 

これはと同等が、マニュアルcd ..よりも短くなっている:

for ((f = 0; f < n; f++)) do 
    cd Folder$countFolder && { touch File$f.txt; cd ..; } 
done 
+1

または単に 'touch $ countFolder/File $ f.txt'をタッチしてください – Barmar

1

あなたはあなたのファイルを作成し、ディレクトリに移動する必要があり、その中にcd滞在は、ように、これらの括弧は、サブシェルを起動しますそれから出発しなさい。これを行う最も効率的な方法は次のとおりです。

#!/bin/bash 


n=1 
declare -i countFolder 

for ((countFolder = 1; countFolder <= 50; countFolder++)) 
do 
    mkdir Folder$countFolder 
    ls 
done 

for ((countFolder = 5; countFolder <= 50; countFolder = countFolder+5)) 
do 

    let "n = n * 2" 
    cd Folder$countFolder 
    for ((f = 0; f < n; f++)) do 
     touch File$f.txt 
    done 
    cd .. 
done 
関連する問題