web-dev-qa-db-ja.com

複数のファイルを特定の宛先ディレクトリに一度に移動する方法は?

いくつかのディレクトリに(他の多くのファイルとともに)移動したいファイルがたくさんありました。

幸いなことに、移動するすべてのファイルの名前には特定の識別子が含まれているため、ls | grep IDENTIFIERを使用して、移動するファイルの正確なリストを取得できます。

しかし、どうすればmv file /path/to/dest/folder/を一度に1つずつではなく一度に実行できますか(移動するファイルがたくさんあります)。

148
gilad hoch

ABC-IDENTIFIER-XYZ.extまたはIDENTIFIER-XYZ.xmlを移動する場合は、次を使用できます。

mv *IDENTIFIER* ~/YourPath/

*は、ゼロ以上の文字のワイルドカードです。これは、ゼロ以上の文字、その後にIDENTIFIERゼロ以上の文字

これにより、指定したすべてのファイルcontainIDENTIFIERが移動します。

98
Evandro Silva

使用できます

mv -t DESTINATION file1 file2 file3

そして

mv -t DESTINATION `ls|grep IDENTIFIER`

動作しますが、grepが一致するたびに新しい行を出力するため、mvが複数回呼び出されるかどうかはわかりません。

196
tuomaz

wildcards を使用できます。

例:拡張子が.docのすべてのファイルを移動するには

mv *.doc /path/to/dest/folder/

これにより、現在のディレクトリの下にあるすべてのドキュメントファイルが特定の宛先に移動します。

編集

コメントに答えるため。

mv *.ext *.xml *.txt /path/to/dest/folder/

24
Achu

無関係なファイルのセット(名前とタイプに共通のパターンはありません)を移動する場合は、Rajanand氏が言ったようにできます。まず、移動するファイルが含まれているディレクトリに移動します。

mv file1.ext1 file2.ext2 file3.ext3.. /destination/

ファイルが異なるディレクトリに散在している場合は、moveコマンドで各ファイルのパスを指定するだけです。

20

私はtuomazのテクニックを使用しますが、わずかに変更しました:

mv file1 file2 file3 -t DESTINATION

これは、Vanilla mv操作と同じ順序を使用しているため、覚えやすく、ねじ込みにくくなっています。

mv file1 DESTINATION
10
Blake Frederick

次のコマンドを使用します。

mv `ls|grep IDENTIFIER` /path/to/dest/folder  

ただし、この種の使用にはlsはお勧めしません。代わりに find コマンドを使用してください。

7
ignite

ファイルが同じディレクトリにある場合は、使用できます

mv /path/to/source/dir/{file1,file2,*.ext1,*.ext2} /path/to/destination/

(Ubuntu 16.04でテスト済み)

5
Sruli

移動するファイルが非常に多い場合、実際にはmvコマンド(またはrmなどの他のコマンド)に対して多すぎることがあります。 xargsを使用して、各ファイルをループのように個別に移動することをお勧めします。それを回避する1つの方法は次のとおりです。

ls -1 | grep IDENTIFIER | xargs -i mv {} /path/to/dest/folder/

ls -1(マイナス1)は、各行に1つのファイル名のみが存在することを保証します。 lsコマンドのエイリアスが非表示になっている場合、1行に複数のファイル名を付けて、移動するつもりのないファイルを誤って移動することができます。

5
AggieBill
find -type f -name "[range]" -exec mv {} target-directory ';'

このコマンドは、任意のパターン/範囲のファイル名をターゲットディレクトリに移動します。

例えば。

find -type f -name "file[1-50000]" -exec mv {} target-directory ';'

file1file2 ... file50000などの名前のファイルをtarget-directoryに移動します。

3
user734124

Lsからの出力を使用して、mv commnadに入力できます。

mv $(ls | grep IDENTIFIER) /path/to/dest/dir

$()の間のコマンドは、検索に一致するファイル名のリストを返し、mvコマンドのパラメーターとして提供できます。

2
Fuad Saud

一番簡単な方法はこんな感じ

mv {file1,file2,file3} DESTINATION

またはディレクトリ

mv {directory1,directory2,directory3} DESTINATION

またはファイルとディレクトリの両方

mv {file1,file2,file3,directory1,directory2,directory3} DESTINATION

お役に立てれば

1
Sabrina

このコマンドを使用すると、複数のファイルを移動できます。

mv SourceFilenames ~DestinationPath

1
Rajanand