「cp」を使用してディレクトリの複数のコピーを作成するには?

「cp」を使用してディレクトリの複数のコピーを作成するには?

私はDebian GNU / Linuxを使用しています。

次のコマンドを実行しました。

mkdir code

cp -Rf code code{1..255}

最初のcmdは次のディレクトリを作成します。パスワード
2番目のコマンドの目的は、名前付きフォルダをコピーすることです。パスワード到着コード1-コード255'

その目的は、フォルダコードを255回コピーすることです。
代わりに、次のように言います。

cp: target 'code255' is not a directory...

なぜこれがうまくいかないのですか? ? ?

touch file{1..255} works fine!

だからなぜダメcp

解決策は何ですか?

=(

ベストアンサー1

このコマンドの構文は次のcpとおりです。

cp [options] file copy-of-file

または

cp [options] file1 file2... directory-to-copy-files-into

つまり、次のようになります。にコピーまたはにコピー

上記の最初の概要では、2つのいずれかです。それが何であるかは、copy-of-fileそれがすでに存在するのか、ディレクトリ(またはディレクトリへのシンボリックリンク)なのかによって異なります。にコピーそれともそうでない場合です。にコピー1.

2番目の要約は常ににコピーdirectory-to-copy-files-into存在しない場合、またはディレクトリでない場合は、エラーメッセージが表示されます。

あなたの場合、シェルは拡張されます。

cp -Rf code code{1..255}

到着する:

cp -Rf code code1 code2 ... code255

もしそうなら、あなたは2番目の状況に属します。にコピーcode255、、...、ファイルをコピーできるディレクトリではないように見え、エラーが発生しますcpcodecodecode254

いずれにせよ、cpファイルの複数のコピーは作成されません。ここでは、cpループなどを使用して作成したい各コピーを呼び出す必要があります。

zshシェルを使用する({1..255}この構文のソース):

for f (code{1..255}) cp -R code $f

あるいは、bashシェルを使用すると(この{1..255}演算子をコピー)、Debianのデフォルトのユーザー対話型シェルなので、おそらくこれを使用しています。

for f in code{1..255}; do cp -R code "$f"; done

他のオプションには以下が含まれますxargs

seq 255 | xargs -I{} cp -R code code{}

またはPOSIXly(最新のsh実装で):

i=1; while [ "$i" -le 255 ]; do cp -R code "code$i"; i=$((i + 1)); done

1、一つにコピーcp file dir/施行はwithまたはwithのGNU実装を介して行うことができます。 ㅏcpcp -t dir fileにコピーGNUを通じてcp実施可能cp -T file copy-of-file

おすすめ記事