0

大量のtarファイルをループして、抽出したファイルを新しいフォルダーに移動し、検査して削除してから、次のtarに移動しようとしています。

コードは以下のとおりです。

for i in *
do
  tar -zxvf $i 
  mv *TTF* encoded
  cd encoded
  for j in *
  do
    echo $j
  done

  rm -f *TTF*
  cd ..
done

ネストされたループに到達すると、x個の可能性をすべて表示するかどうかを尋ねられます。明らかに何かがうまくいかない。何か案は?

4

3 に答える 3

3

ひょっとして、これをテキストエディタで書いて端末に貼り付けようとしたのですか?タブを使用して行をインデントしましたか? その場合は、タブをスペースに変更するか、ファイルをシェル スクリプトとして保存してから実行してください。

(Tab キーは補完を呼び出します。一致する補完が多数ある場合は、「x 個の可能性をすべて表示します」というメッセージが表示されます。)

于 2010-10-12T11:32:05.967 に答える
0

echo "Enter no of terms" read count for i in $(seq 1 $count) do t= expr $i - 1for j in $(seq $t -1 0) do echo -n " " done j= expr $count + 1x= expr $j - $ifor k in $( seq 1 $x) do echo -n "* " done echo ""

于 2014-01-19T16:39:36.570 に答える
0

「cd」コマンドとそれに続くアクションをサブシェルで実行します。つまり、「 」を実行する必要はありませんcd ..。また、各 tar ファイルをサブディレクトリに直接展開する方がよいでしょう。

for i in *.tar.gz
do
  mkdir encoded
  (
  cd encoded
  tar -zxvf ../$i 
  for j in *
  do
    echo $j
  done
  )
  rm -fr encoded
done

これは、tar ファイルのパスに「 」を含む名前が含まれていないことのみを前提としてい..ますが、これは非常にまれです。

于 2010-10-12T11:32:12.907 に答える