ディレクトリのリストを含むファイルがあります。例えば
/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
これは「ヘルパープログラム」を作成しないと実行できません。