与えられたテキストファイルの各行のディレクトリを作成しますか?

与えられたテキストファイルの各行のディレクトリを作成しますか?

与えられた(引数)ファイルからデータを読み込み、ファイルの各行に対して与えられた(引数)ディレクトリの下にサブディレクトリを作成するbashシェルスクリプトを作成しようとしています。

スクリプト名はstudentDirで、入力ファイル名はですstudentInfo.txt
以下は2行です。

Sara Smith Freshman Marketing
James Lucas Junior Engineering

ユーザーは、コマンドラインにスクリプト名、txtファイル名、および新しいディレクトリを保存するディレクトリを作成します。私はそれが次のようになると想像しています:

$ studentDir studentInfo.txt .

これにより、現在のディレクトリ内にサブディレクトリが作成されます。

ディレクトリ名を指定する必要があります。LLLLFF
たとえば、

SmitSa
LucaJa

(入力ファイルに追加情報は必要ありません)

私が使用する名前を取得したいと思います。

DIRNAME=$(cut -d' ' -f2 | cut -c1-4 ; cut -d' ' -f1 | cut -c1-2) 
mkdir "$DIRNAME" 

しかし、どのコマンドが各行のディレクトリを生成するのか、各行に対して再帰的にこれを行う方法がわかりません。

ベストアンサー1

奇妙なソリューション

awk '{print substr($2,1,4) substr($1,1,2)}' file

ディレクトリ名を指定します。

mkdir $(awk '{print substr($2,1,4) substr($1,1,2)}' file)

ディレクトリを作成します(ディレクトリが多すぎない場合)。大きな数字(10,000+)の場合は、次のものを使用できます。

awk '{print substr($2,1,4) substr($1,1,2)}' file | xargs --delimiter=\\n mkdir

バッシュソリューション

awk必ずしも必要ではありません。シェルは自分でこれを行うことができます。

while read first last rest; do mkdir -p "${last:0:4}${first:0:2}"; done <file

おすすめ記事