
次のようなリストがファイルにありますnames.txt
:
JOHN DOE
JANE DOE
ADAM SMITH
SARAH BROWN
SUSIE JOHNSON
このリストの各行からフォルダーを作成するためにターミナルで実行できるスクリプトはありますか?
答え1
テキスト ファイルの各行に対してコマンドを実行する簡単な方法があり、 のような単一のコマンドに対して過剰なスクリプトは必要ありませんmkdir
。xargs
次のようにコマンドを使用します。
xargs -tI % mkdir % < names.txt
オプションは、 の各行に対して コマンドを実行するように-I
指示します。この場合、 STDIN はでファイルを読み取ったものです。文字は、 をファイルからの行のプレースホルダーとして使用する置換文字列です。つまり、コマンドでが見られるすべての箇所で、がファイルからの行に置き換えられます。xargs
STDIN
names.txt
< names.txt
%
xargs
xargs
%
%
この-t
オプションにより、xargs
各コマンドが実行される前に印刷されます。必須ではありませんが、より複雑な問題の場合に役立ちます。
xargs
サンプル ファイルで実行すると、出力は次のようになります。
mkdir ジョン・ドゥ mkdir JANE DOE mkdir アダム・スミス mkdir SARAH BROWN mkdir SUSIE JOHNSON
コマンドはファイルmkdir
の名前で新しいフォルダーを作成しますnames.txt
。