特定の種類のファイルを検索して、あるディレクトリから別のディレクトリにコピーする
外付けハードディスクがめちゃくちゃになってしまいました。そう、すべてのファイルを 1 つのディレクトリにダンプしたからです。私はファイルやフォルダーを正しい順序で整理するのが面倒でした。特定のファイルを探しているときはさらに時間がかかりました。そこで、特定の種類のファイルを別のディレクトリに整理した方がずっと良いのではないかと考えました。ファイルの種類ごとにフォルダーを作成し、それぞれのフォルダーにファイルを保存することにしました。たとえば、すべてのメディア ファイル (オーディオとビデオ) はマルチメディア というディレクトリに、画像ファイルはピクチャ フォルダに、公式関連のものは というフォルダに移動するとします。 > オステニクスです。
ただし、特定の種類のファイルを手動で検索してコピーするのは面倒で、非常に時間のかかる作業です。ファイルの数が多い場合、すべてのファイルを検索してコピーするには何時間もかかります。そこで、Google で簡単に検索したところ、適切な解決策が見つかりました。 Linux や Unix 系のオペレーティング システムで特定の種類のファイルをあるディレクトリから別のディレクトリにコピーしたい場合は、次の方法があります。これを行うにはさまざまな方法がありますが、次の方法が簡単で簡単であることがわかりました。
Linux で特定の種類のファイルを検索して、あるディレクトリから別のディレクトリにコピーする
「find」コマンドを使用してファイルを整理します。 Find コマンドはほとんどの Unix 系ディストリビューションにプリインストールされているため、わざわざインストールする必要はありません。このガイドでは、mp3 ファイルをすばやく検索して test1 というディレクトリから test2 という別のディレクトリにコピーする方法を説明します。
test ディレクトリの内容を確認してみましょう。
ls /home/sk/test1
サンプル出力:
'Bombay Rockers.mp3' 'Marconi Union - Sleepless.mp3' wiua9.jpg
books.txt Maruvaarthai.mp3
上記の結果からわかるように、test1 ディレクトリには 3 つの mp3 ファイルがあります。これらの mp3 ファイルを test2 ディレクトリにコピーしましょう。これを行うには、次のコマンドを使用して test1 ディレクトリに移動します。
cd /home/sk/test1/
次に、次のコマンドを実行して、拡張子 .mp3 に一致するすべてのファイルを検索してコピーします。
find -iname '*.mp3' -exec cp {} /home/sk/test2/ \;
上記のコマンドを分解して、各オプションが何を行うかを見てみましょう。
- find - Unix 風のシステムでファイルやフォルダーを検索するコマンドです。
- -iname '*.mp3' - 拡張子 .mp3 に一致するファイルを検索します。
- -exec cp - 「cp」コマンドを実行してソース ディレクトリから宛先ディレクトリにファイルをコピーするように指示します。
- {} - 「find」コマンドで見つかったファイルのファイル名に自動的に置き換えられます。
- /home/sk/test2/ - 一致するファイルを保存するターゲット ディレクトリ。
- \; - 実行するコマンドが完了し、次の一致でコマンドを再度実行することを示します。
クリア?良い!ここで、test2 ディレクトリをチェックして、ファイルが正しくコピーされたかどうかを確認してみましょう。
ls /home/sk/test2
出力例は次のようになります。
'Bombay Rockers.mp3' Maruvaarthai.mp3
'Marconi Union - Sleepless.mp3'
ご覧のとおり、拡張子 .mp3 を持つすべてのファイルが test1 ディレクトリから test2 ディレクトリにコピーされました。同様に、上で説明したように、他のタイプのファイルを選択した別のディレクトリにコピーできます。
上記のコマンドは、ソース ディレクトリとそのサブディレクトリからすべての *.mp3 ファイルをコピーします。それをしたくない場合は、-max Depth フラグを使用してください。たとえば、次のコマンドは、ソース ディレクトリのみからすべての .mp3 ファイルをコピーしますが、そのサブディレクトリからはコピーしません。
find -maxdepth 1 -iname '*.mp3' -exec cp {} /home/sk/test2/ \;
こうすることで、特定の種類のファイルを検索するときに時間を大幅に節約できます。このトリックは、さまざまな種類の大量のファイルをあるディレクトリから別のディレクトリに転送する必要がある場合に役立ちます。
関連記事:
- Linux でディレクトリ構造を維持しながら特定のファイル タイプをコピーする
詳細については、マニュアルページを参照してください。
man find
ファイル拡張子に基づいてファイルを異なるディレクトリに自動的に整理する「Classifier」 という名前のスクリプトもあります。詳細については、以下のリンクをご覧ください。
- 特定のフォルダ内の類似した種類のファイルを自動的に整理する方法
お役に立てれば。