特定の名前パターンを使用して、何百万ものファイルを別のディレクトリに移動します。

特定の名前パターンを使用して、何百万ものファイルを別のディレクトリに移動します。

Linuxシステムには、次の命名法を使用する何百万ものファイルがあります。

1559704165_a1ac6f55fef555ee.jpg

最初の10桁はタイムスタンプ、次の10桁_は特定のIDです。特定のファイル名IDと一致するすべてのファイルを別のフォルダに移動したいと思います。

ファイルを含むディレクトリでこれを試しました。

find . -maxdepth 1 -type f | ??????????_a1ac*.jpg |xargs mv -t "/home/ubuntu/ntest"

しかし、エラーメッセージが表示されます。

bash 1559704165_a1ac6f55fef555ee.jpg: command not found

すると、mv ??????????_a1ac*.jpg 引数リストが長すぎるというエラーが発生します。少なくとも15の異なるファイル名パターンがあります。どうやって移動しますか?

ベストアンサー1

以下を使用する必要があります。

find . -maxdepth 1 -type f -name '??????????_a1ac*.jpg' \
-exec mv -t destination "{}" +

つまり、maxdepth 1サブディレクトリがない現在のディレクトリから検索していることを意味します。

type fファイル検索のみを示します。

name '??????????_a1ac*.jpg'検索中のファイルと一致するパターン。

mv -t destination "{}" +一致するファイルをターゲットに移動することを示します。ここで、+一致する新しいファイルが古いファイルに追加されます。たとえば、次のようになります。

mv -t dest a b c d

ここで、abcd は別のファイルです。

おすすめ記事