あるディレクトリから別のディレクトリにファイルを移動するには、「 mv ‘コマンドはLinuxで使用されます。このコマンドはデフォルトでLinuxで使用可能であり、ディレクトリだけでなくファイルの移動にも使用できます。
mvコマンドに使用する構文 は:
$ mv file1 file2 / tmp

たとえば、同じ拡張子のファイルを移動する場合( txt など) )または増分方式で番号が付けられているもの(例: file_1 、 file_2 など)、ワイルドカードを使用して、各名前を入力する代わりに、これらすべてのファイルを指定できます。
$ mv * .txt / tmp $ mv file_ * / tmp
基本的に、「 mv ‘には、移動するファイルまたはディレクトリである引数をいくつでも含めることができます。最後の引数は、それらが移動されるターゲットディレクトリです。
多数のファイルの移動に関する問題
Linuxシステムには、1つのコマンドで使用できる引数の最大数に事前定義された制限があります。この制限は、スタックサイズに基づいてシステムごとに異なります。
したがって、非常に多くのファイルが「 mv」のワイルドカードで指定されている場合 ‘、例: 10万を超えるファイルの場合、「引数リストが長すぎます」というエラーがスローされます。 」。
たとえば、次の画像では、フォルダに 253420が含まれています ファイル。したがって、それらを移動しようとすると、前述のエラーが発生します。
$ ls -l | wc -l $ ls |ヘッド-1000

$ mv file_ * / tmp

解決策:「検索」コマンドを使用
この問題を解決するために、「検索」を使用します ' 指図。 「検索 ‘コマンドは基本的に、さまざまなパラメータに基づいてディレクトリ内のファイルを検索します。
「検索」を実行します ‘移動するファイルと同じディレクトリにあります。次に、'-exec'
を利用します 「検索」のパラメータ ‘これにより、findの出力に対して任意のコマンドを実行できます。
「mv」を実行します ‘with '-exec'
パラメータ。
$find。 -name "file_ *" -exec mv {} / tmp \;

ここで、最初の引数'.'
((ドット)現在のディレクトリ)は、ファイルを見つけるディレクトリです。引数“-name”
その後の文字列は、必要なファイルを一覧表示できる式を指定します。
次に、「 mv」を指定します 引数の後の‘コマンド'-exec'
。角かっこ'{ }'
findの出力から使用される引数のプレースホルダーです。
以下を実行して確認し、ファイルが‘/ tmp’に正常に移動されたことを確認できます。 。
$ ls -l / tmp | wc -l </ pre>![]()
関連記事 :Linuxで多数のファイルをコピーする方法
結論
この記事では、あるディレクトリから別のディレクトリに多数のファイルを移動し、「引数リストが長すぎます」を正常にバイパスする方法を説明しました。 Linuxでのエラー。
フィードバックや質問がある場合は、下のコメントでお知らせください!
Linux