ファイルを解析するときに無駄なcatの使用を防ぐ方法は?

ファイルを解析するときに無駄なcatの使用を防ぐ方法は?

ディレクトリのリストを含むファイルがあります。例えば

/foo/bar/dir1
/foo/bar/dir2
/foo/bar/dir3

私はこれらすべてのディレクトリを作成したいと思います。これが私がしたことです:

for dir in $(cat myfile); do mkdir $dir; done

「猫の無駄な利用」を避けながら、すべき正しいことは何ですか?

理想的には、答えはKsh88に焦点を当てますが、他のシェルにも興味があります。

ベストアンサー1

一般に、プログラマーの使用に関するアドバイスがxargs最善ですが、別のオプションはループへのリダイレクトを使用することですwhile。これにより、追加のコマンドを実行して変数を設定できます。

while read -r dir; do mkdir $dir; done < myfile

より複雑な構造の例は次のとおりです。

now=`date +%Y%m%d.%H%M%S`
while read -r dir; do
    newdistfile="/tmp/dist-`echo $dir | tr / _`.tgz"
    mv $dir ~/backups/$dir.$now &&
        mkdir $dir &&
        tar xzfC $newdistfile $dir
done < myfile

xargsこれは「ヘルパープログラム」を作成しないと実行できません。

おすすめ記事