2016-07-14 12 views
-1

ホームディレクトリの10個のサブディレクトリ(1〜10とラベル付けされている)にデータをソートするUNIXシェルスクリプトを書いています。各サブディレクトリで、スクリプトはhehd.outputファイルとfort.hehd.timeファイルの名前を変更し、hehd.dataファイルを新しい名前の.dataファイルにコピーする必要があります。シェルスクリプト内で変数付きのファイルに名前をつける

AA.BB.CC

AA = a variable in the hehd.data file within the subdirectory containing the file 
    BB = the name of the subdirectory containing the file (1-10) 
    CC = the original file name 

各サブディレクトリにはhehdが含まれてい

:私はそれが何をしたいのですがどのような

は、次の形式でこれらの各ファイルの名前を変更しています。各hehd.dataファイルには文字列ij0 = AAが含まれています。ここで、AAは同じサブディレクトリ内のファイルの名前を変更するために使用する変数です。例えば

:実行すると、スクリプトが/home/4/2.4.hehdに/home/4/hehd.output移動し、その後、文字列ij0 = 2ため/home/4/hehd.dataを検索します。出力。

私は現在、文字列ij0 = *を検索し、それをサブディレクトリ内の新しいテキストファイルにコピーするためにgrepコマンドを使用しています。次に、文字列ij0 =がテキストファイルから削除され、その内容が同じサブディレクトリ内のすべてのターゲットファイルの名前を変更するために使用されます。シェルスクリプトの最後の行は、テキストファイルを削除します。

私はこれを達成するためのより良い方法を探していますが、10個のサブディレクトリをすべて同じスクリプトで一度に並べ替えることができます。私のスクリプトは信じられないほど非効率的だと思って、私がそれだけでそれを望むすべてをしない。

これを改善するにはどうすればよいですか?

何かアドバイスやご提案がありがとうございます。私はより良いコンピュータユーザーになろうとしています。それは、より良い方法を学ぶことを意味します。

+1

英語の擬似コードとは対照的に、実際のコードを提供することを検討してください。実装の詳細は重要であり、実装を読んでいないと、それらが何であるかはわかりません。 –

+1

(一般に、StackOverflowには、特定の回答を持つ集中的な質問がありますが、「Xについて議論することはできますか」と解釈することができます。問題Xを解決することはできますか?」には具体的な解決方法がありますが、汎用目的の「このコードを改善するにはどうすればよいですか」の質問についてはhttp://codereview.stackexchangeを参照してください。com/- しかし、単にサイトを再投稿するのではなくサイトのルールを読んでください)。 –

+1

... http://stackoverflow.com/help/dont-askは同様の領域をカバーしています。 –

答えて

0

これを試してみてください:

fromdir=/home 
for i in {1..10};do 
    AA=$(sed 's/ij0=\([0-9]*\)/\1/' "$fromdir/$i/hehd.data") 
    BB="$i" 
    for f in "$fromdir/$i/"*;do 
    CC="${f##*/}" 
    if [[ "$CC" = "hehd.data" ]]; then 
     echo cp "$f" "$fromdir/$i/$AA.$BB.$CC" 
    else 
     echo mv "$f" "$fromdir/$i/$AA.$BB.$CC" 
    fi 
    done 
done 

これは、Bashのシーケンス{1..10]を使用して、ディレクトリをループします。

各ディレクトリで、AA変数にij0の値が割り当てられ、ディレクトリ名がBBに割り当てられています。

ファイルループでは、ファイルがhehd.dataの場合はコピーされ、それ以外の場合は新しい名前で名前が変更されます。

cpおよびmvコマンドの前にechoを削除すると、出力が必要に応じて削除できます。

+0

彼のコードを掲載しているOPがなければ、彼はすでに書いたのと同じコードで終わる可能性があります。 – alvits

+0

@alvits彼は、自分のアプローチではない(grep出力からファイルを作成し、変数名をファイルから削除し、ファイルを削除する)方法について簡単に説明します。待って見ましょう。 – SLePort

関連する問題