与えられた(引数)ファイルからデータを読み込み、ファイルの各行に対して与えられた(引数)ディレクトリの下にサブディレクトリを作成する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