あるディレクトリから別のディレクトリに通常のファイルのみをコピーする

あるディレクトリから別のディレクトリに通常のファイルのみをコピーする

1番ディレクトリの内容を2番ディレクトリにコピーしたいです。しかし、ディレクトリではなくディレクトリ1からファイルをコピーしたいだけです。どうすればいいですか?

cp dir1/* dir2/*

まあ、まだディレクトリの問題があります。

また、私のファイルには拡張子がないので*.*動作しません。

ベストアンサー1

cp dir1/* dir2

cp明示的に指示しない限り、ディレクトリはコピーされません(たとえば--recursive参照man cp)。

注1: cpゼロ以外の状態で終了する可能性が高いが、ファイルはとにかくコピーされます。これは、終了コード(&&など)に基づいてコマンドをリンクするときに問題になる可能性があります。 (ありがとうございます||if cp -r dir1/* dir2; then ...コンテビス~のためこの問題について彼らが言ったこと)

ノート2cp最後の引数は単一のファイル名またはディレクトリであると予想されます。*ターゲットディレクトリ名の後にはワイルドカード文字を含めないでください。 .予期しないことdir2\*のように、シェルによって拡張されます。dir1\*〜する起こる:

  • 空で、dir2シェルと設定によって異なります。
    • 最良のシナリオであるエラーメッセージのみが表示されることがあります。
    • dir2/*文字通り使用され(名前付きファイル/ディレクトリの検索)、実際に存在しない限り*エラーが発生する可能性があります。*
    • dir2/*cp dir1/*拡張子によってはコマンドから完全に削除され、dir1/*データが破損する可能性があります。
      • dir1/*ファイルまたはディレクトリが1つだけ一致すると、エラーが発生しますcp
      • 正確に2つのファイルが一致すると、dir1/*あるファイルが別のファイルで上書きされます(悪い)。
      • dir/*複数のファイルが一致し、最後の一致がaの場合、エラーメッセージが表示されます。
      • 最後の一致がdir/*ディレクトリの場合、他のすべての一致はそのディレクトリに移動されます。
  • 空でない場合は、dir2次のように変わります。
    • 最後の一致がdir2/*ディレクトリの場合、dir1/*他の一致はdir2/*中に移動されます。
    • 最後の一致がdir2/*ファイルの場合、エラーメッセージが表示されることがあります。〜しない限り dir1/*1つのファイルのみが一致します。

おすすめ記事