私は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
、、...、ファイルをコピーできるディレクトリではないように見え、エラーが発生しますcp
。code
code
code254
いずれにせよ、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実装を介して行うことができます。 ㅏcp
cp -t dir file
にコピーGNUを通じてcp
実施可能cp -T file copy-of-file