文字ベースのファイルをディレクトリに挿入するためのBashスクリプト[閉じる]

文字ベースのファイルをディレクトリに挿入するためのBashスクリプト[閉じる]

私がしなければならないのは、15のディレクトリ(1から15までの名前を付ける)を生成するスクリプトを作成し、各ディレクトリに文字(アルファベット順)を割り当てる必要があることです。

したがって、スクリプトを実行した後は、次のようにする必要があります。

ディレクトリ 1 には文字 A が含まれ、ディレクトリ 2 には B が含まれ、数字 15 に達し、文字 O. が含まれるまで続きます。

答え1

bashではなくawkとquipです。

echo {A..O} | xargs -n 1 | awk '{system("mkdir "NR" && touch "NR"/"$1)}'

答え2

letters=(0 A B C D E F G H I J K L M N O)
i=1
while [ ${i} -le 15 ]
do
  mkdir ${i}
  touch ${i}/${letters[${i}]}
  (( i++ ))
done

説明:文字は、数値に対応する文字を含む配列です。配列の最初の項目はインデックス0にあります。数字は1から始まるので、塗りつぶし文字を入力しました。それが何であるかは問題ではありません。

i値が1から15の間に変更されると、mkdirそのディレクトリ名のコマンドが実行されます。i

lettersその後、各ディレクトリに配列の対応する文字名となるファイルが作成されます。

答え3

以下は、その文字を含むファイルを含むディレクトリを作成する方法です。

 #!/bin/bash 
 declare -r LETTERS=(A B C D E F G H I J K L M N O) # Read Only Letters Array
 declare -i COUNTER=0 # Integer Variable "COUNTER"

 while [  $COUNTER -lt 15 ]; do # While Counter Less Than 15 Do...
     COUNTER+=1 # Add 1 to counter
     mkdir $COUNTER # Make the directory
     echo > $COUNTER/${LETTERS[$COUNTER-1]} # Create the file
 done

私がエコーを使用する理由は、過去にタッチに問題があったからです(そしてエコーはうまく機能します)。

もともとスイッチケースを使いたかったのですが(あまり連絡が悪いので)、配列の使用にMelBurslanの例を使用しました。

答え4

#!/bin/bash
set   -- {A..O}
j=0
for   i
do    j=$((j+1))
      mkdir "Dir$j"
      touch "Dir$j/$i"
done

コードはタスクを実行するために位置パラメータを使用するため、これらのパラメータは削除されます(重要ではありませんが、注意してください)。

関連情報