いくつかのディレクトリに(他の多くのファイルとともに)移動したいファイルがたくさんありました。
幸いなことに、移動するすべてのファイルの名前には特定の識別子が含まれているため、ls | grep IDENTIFIER
を使用して、移動するファイルの正確なリストを取得できます。
しかし、どうすればmv file /path/to/dest/folder/
を一度に1つずつではなく一度に実行できますか(移動するファイルがたくさんあります)。
ABC-IDENTIFIER-XYZ.ext
またはIDENTIFIER-XYZ.xml
を移動する場合は、次を使用できます。
mv *IDENTIFIER* ~/YourPath/
*
は、ゼロ以上の文字のワイルドカードです。これは、ゼロ以上の文字、その後にIDENTIFIER
、ゼロ以上の文字。
これにより、指定したすべてのファイルcontainIDENTIFIER
が移動します。
使用できます
mv -t DESTINATION file1 file2 file3
そして
mv -t DESTINATION `ls|grep IDENTIFIER`
動作しますが、grepが一致するたびに新しい行を出力するため、mvが複数回呼び出されるかどうかはわかりません。
wildcards を使用できます。
例:拡張子が.docのすべてのファイルを移動するには
mv *.doc /path/to/dest/folder/
これにより、現在のディレクトリの下にあるすべてのドキュメントファイルが特定の宛先に移動します。
編集
コメントに答えるため。
mv *.ext *.xml *.txt /path/to/dest/folder/
無関係なファイルのセット(名前とタイプに共通のパターンはありません)を移動する場合は、Rajanand氏が言ったようにできます。まず、移動するファイルが含まれているディレクトリに移動します。
mv file1.ext1 file2.ext2 file3.ext3.. /destination/
ファイルが異なるディレクトリに散在している場合は、moveコマンドで各ファイルのパスを指定するだけです。
私はtuomazのテクニックを使用しますが、わずかに変更しました:
mv file1 file2 file3 -t DESTINATION
これは、Vanilla mv操作と同じ順序を使用しているため、覚えやすく、ねじ込みにくくなっています。
mv file1 DESTINATION
次のコマンドを使用します。
mv `ls|grep IDENTIFIER` /path/to/dest/folder
ただし、この種の使用にはlsはお勧めしません。代わりに find コマンドを使用してください。
ファイルが同じディレクトリにある場合は、使用できます
mv /path/to/source/dir/{file1,file2,*.ext1,*.ext2} /path/to/destination/
(Ubuntu 16.04でテスト済み)
移動するファイルが非常に多い場合、実際にはmv
コマンド(またはrm
などの他のコマンド)に対して多すぎることがあります。 xargs
を使用して、各ファイルをループのように個別に移動することをお勧めします。それを回避する1つの方法は次のとおりです。
ls -1 | grep IDENTIFIER | xargs -i mv {} /path/to/dest/folder/
ls -1
(マイナス1)は、各行に1つのファイル名のみが存在することを保証します。 ls
コマンドのエイリアスが非表示になっている場合、1行に複数のファイル名を付けて、移動するつもりのないファイルを誤って移動することができます。
find -type f -name "[range]" -exec mv {} target-directory ';'
このコマンドは、任意のパターン/範囲のファイル名をターゲットディレクトリに移動します。
例えば。
find -type f -name "file[1-50000]" -exec mv {} target-directory ';'
file1
、file2
... file50000
などの名前のファイルをtarget-directory
に移動します。
Lsからの出力を使用して、mv commnadに入力できます。
mv $(ls | grep IDENTIFIER) /path/to/dest/dir
$()
の間のコマンドは、検索に一致するファイル名のリストを返し、mvコマンドのパラメーターとして提供できます。
一番簡単な方法はこんな感じ
mv {file1,file2,file3} DESTINATION
またはディレクトリ
mv {directory1,directory2,directory3} DESTINATION
またはファイルとディレクトリの両方
mv {file1,file2,file3,directory1,directory2,directory3} DESTINATION
お役に立てれば
このコマンドを使用すると、複数のファイルを移動できます。
mv SourceFilenames ~DestinationPath