回答:
ABC-IDENTIFIER-XYZ.extまたはに移動する場合はIDENTIFIER-XYZ.xml、次を使用できます。
mv *IDENTIFIER* ~/YourPath/
*は0個以上の文字のワイルドカードであり、これは0個以上の文字を意味しIDENTIFIER、その後に0個以上の文字が続きます。
これにより、指定したファイルを含むすべてのファイルが移動しIDENTIFIERます。
使用できます
mv -t DESTINATION file1 file2 file3
そして
mv -t DESTINATION `ls|grep IDENTIFIER`
動作しますが、grepが一致するたびに新しい行を出力するため、mvが複数回呼び出されるかどうかはわかりません。
mv file1 file2 ... destination
ワイルドカードを使用できます。
例:拡張子が.docのすべてのファイルを移動するには
mv *.doc /path/to/dest/folder/
これにより、現在のディレクトリの下にあるすべてのドキュメントファイルが特定の宛先に移動します。
編集
コメントに答えるため。
mv *.ext *.xml *.txt /path/to/dest/folder/
ABC-IDENTIFIER-XYZ.extそして、いくつかは、ちょうどIDENTIFIER-XYZ.extすべてのほとんどは、異なる拡張子を持ちますxmlかproperties。
.xml移動したくない他のファイル(たとえば)があるため、動作しません。
無関係なファイルのセット(名前とタイプに共通のパターンはありません)を移動する場合は、Rajanand氏が言ったようにできます。まず、移動するファイルが含まれているディレクトリに移動します。
mv file1.ext1 file2.ext2 file3.ext3.. /destination/
ファイルが異なるディレクトリに散在している場合、moveコマンドで各ファイルのパスを指定するだけです。
私はtuomazのテクニックを使用しますが、わずかに変更しました:
mv file1 file2 file3 -t DESTINATION
これは、バニラmv操作と同じ順序を使用しているため、覚えやすく、ねじ込みにくくなっています。
mv file1 DESTINATION
mvは-tオプションが記載されていません。
次のコマンドを使用します。
mv `ls|grep IDENTIFIER` /path/to/dest/folder
ただし、この種の使用にはlsはお勧めしません。代わりにfindコマンドを使用してください。
lsこのような使用にはお勧めしません。特にgrep背後にあるファイルを一覧表示する場合は、を使用しますfind . -name \*IDENTIFIER\*。
移動するファイルが非常に多い場合、実際にはmvコマンド(またはのような他のコマンドrm)に対して多すぎることがあります。xargsループのように各ファイルを個別に移動する方法を使用することをお勧めします。それを回避する1つの方法は次のとおりです。
ls -1 | grep IDENTIFIER | xargs -i mv {} /path/to/dest/folder/
ls -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コマンドのパラメーターとして提供できます。