cpはソースの場所に新しいファイルをコピーしません(cpコマンドがトリガーされた後に生成されたファイル)。

cpはソースの場所に新しいファイルをコピーしません(cpコマンドがトリガーされた後に生成されたファイル)。

次のコマンドを使用して、ソースディレクトリの内容をターゲットディレクトリにコピーします。

cp src/* dest

ただし、このコマンドを呼び出した後にコンテンツをコピーするときにsrcディレクトリに追加のファイルを作成すると、新しく作成されたファイルはdestディレクトリにコピーされません。

その理由を説明してもらえますか?cpコンテンツの実行時にアカウントを作成cpし、そのアカウントに基づいてコピーして新しく作成されたコンテンツを上書きできますか?

答え1

これは、src / *がcp(ファイルリストに展開されている)によって評価されず、cpが呼び出される前のシェルによって評価されるためです。

答え2

src/*シェル拡張でAndreasが正しい。ただし、ワイルドカードを指定しなくても、cp新しく作成されたファイルをスキップする可能性があります。競争条件cpディレクトリにアクセスするプロセスとディレクトリを変更するユーザー(実際にはユーザーの代わりにファイルを作成するプロセス)の間にあります。

実装に関する限りGNU接続この場合、実際にコピーする前にディレクトリエントリのリストを取得します(copy_dir関数を参照)。ここ)。

関連情報