この質問は、前の質問に対する後続の質問です。以下を使用して多数のディレクトリを作成します。mkdir
。
シェルを使用していますbash
。次のコマンドを使用して、それぞれプレフィックス "s"で始まる50のディレクトリを作成しました。
mkdir $(printf "s%02i " $(seq 1 50))
2番目の数字までゼロで埋めます。つまり、私が得たディレクトリはs01
、、、s02
...、、s49
の形ですs50
。
今cp
。test.txt
上記の方法に似ていますか?たとえば、次のように動作しますか?私はUnix / Linuxにはあまり慣れていないので、誰かが安全だと言うまで、この方法を試したくありません。
cp test.txt $(printf "s%02i.txt " $(seq 1 50))
man
ページを見ると、このような複数のターゲットをサポートしていないcp
ようですが、次のようになります。cp
NAME
cp - copy files and directories
SYNOPSIS
cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
DESCRIPTION
Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.
Mandatory arguments to long options are mandatory for short options
too.
ベストアンサー1
for
ループを介してシェルを繰り返すこともできます。これは最も基本的なアプローチであり、parallel
外部ツールなどに依存せず、xargs
理解するのが最も簡単だと思います。
for name in $(printf "s%02i " $(seq 1 50)); do
mkdir $name
cp test.txt $name
done
次のように書く方法は何百万ものあります。
for name in $(seq -w 1 50); do
mkdir s$name
cp test.txt s$name
done
実行する前に実行する内容を確認するには、コマンドの前にthisを追加すると、実行するのではなく行がecho
印刷されます。
for name in $(seq -w 1 50); do
echo mkdir s$name
echo cp test.txt s$name
done
出力:
mkdir s01
cp test.txt s01
mkdir s02
cp test.txt s02
mkdir s03
cp test.txt s03
# etc.