cpコマンドを使用します Linuxでは、ファイルとディレクトリをあるディレクトリから別のディレクトリにコピーします。いくつかのファイルやディレクトリをコピーするために使用することも、'-r'
とともに使用することもできます。 引数(「再帰的」の略) ‘)ディレクトリとその下のディレクトリツリー構造全体をコピーします。
cpコマンドに使用する構文 は:
$ cp... $ cp -r ... $ cp file1 file2 file3 / tmp
多数のファイルをコピーする場合は、ワイルドカードで指定できます。;連続したパターンで名前が付けられている場合(例: filename_1 、 filename_2 など)、または同じ拡張子のファイルが多数ある場合(例:.mp4
。
$ cp * .txt / tmp $ cp file_ * / tmp
cpコマンド したがって、ファイル、ディレクトリ、またはその両方の引数をいくつでも持つことができます。最後の引数は、コピー先のターゲットディレクトリです。
多数のファイルをコピーしています:「引数リストが長すぎます」エラー
理論的には「cp ‘は可能な限り多くの引数を持つことができます。単一のコマンドが処理できる引数の最大数には、事前定義された制限があります。これはLinuxシステムで定義されている制限であり、システムのスタックサイズに基づいています。
したがって、非常に多くのファイルが「 cp」のワイルドカードで指定されている場合 ‘、例: 10万を超えるファイルの場合、「引数リストが長すぎます」というエラーがスローされます。 「。
たとえば、次の画像に示すように、フォルダには 100002が含まれています ファイル。したがって、すべてのファイルをワイルドカードで渡すcopyコマンドを実行すると、前述のエラーが発生します。
$ ls -l | wc -l $ cp file_ * target /
解決策:「検索」コマンドを使用して「引数リストが長すぎます」エラーを修正します
この問題を解決するために、検索コマンドを使用します 、基本的に、さまざまなパラメータに基づいてディレクトリ内のファイルを検索します。 「検索」を実行します ‘コピーしたいファイルと同じディレクトリにあります。
次に、'-exec'
を利用します 「検索」のパラメータ ‘これにより、findの出力に対して任意のコマンドを実行できます。
$find。 -maxdepth 1 -name "" -exec cp {}\;
ここで、最初の引数'.'
(現在のディレクトリ)は、ファイルを見つけるディレクトリです。引数'-maxdepth 1'
現在のディレクトリ内のファイルとディレクトリのみを考慮します。この深さを指定せずに、「検索 ‘コマンドはすべてのサブディレクトリを不必要に調べます。
引数"-name"
その後の文字列は、必要なファイルを一覧表示できる式を指定します。次に、「 cp」を指定します ‘引数後のコマンド'-exec'
。開き角かっこ、'{ }'
findの出力から使用される引数のプレースホルダーです。
$find。 -maxdepth 1 -name " file _ * "-exec cp {} target / \;
ファイルが'/target'
に正常にコピーされたことがわかります 。
$ cd target / $ ls |ヘッド-10$ls -l | wc -l </ pre>同様に、ファイルと一緒にコピーするディレクトリがある場合は、「 cp」を実行します。 ‘with
'-r'
以下の例のフラグ。$find。 -maxdepth 1 -name " file _ * "-exec cp -r {} target / \;このような場合、ディレクトリ名も「ファイル名パターン」で検索できる必要があることに注意してください。 ‘。
関連記事 :Linuxで多数のファイルを移動する方法
結論
この記事では、Linuxで1つのディレクトリから別のディレクトリに多数のファイルをコピーする方法と、「引数リストが長すぎる」という問題を回避する方法について説明しました。 ‘。
フィードバックや質問がある場合は、下のコメントでお知らせください!
Linux