GNU/Linux >> Linux の 問題 >  >> Linux

ファイルを再帰的にコピーするときに特定のファイル拡張子を除外する方法

ご存知かもしれませんが、「cp」 は、ファイルとディレクトリをコピーするためのLinuxのコマンドラインプログラムです。 「cp」のシンプルで最も一般的な使用法 は次のとおりです:

$ cp file1 file2 file3... fileN target_folder/

上記のコマンドは、「空」だけでなくファイルに対しても機能することに注意してください。 フォルダ。ファイルまたはサブフォルダーのいずれかのコンテンツを含むフォルダーでは機能しません。

このようなフォルダをコピーするには、'-r'を指定します。 (再帰的)フラグ。

$ cp -r folder1/ folder2/ file1 file2 target_folder/

再帰的コピーとは、フォルダの下にあるフォルダ構造全体、つまり、サブフォルダとその中のファイル、サブフォルダ内のサブフォルダとその中のファイルなどがコピーされることを意味します。

これによりすべてのファイルがコピーされ、「cp」内に方法はありません。 特定のパラメータに基づいて一部のファイルを除外するコマンド。たとえば、ユーザーは、階層の最下位にあるサブフォルダー内のMP3(オーディオ)ファイルを除いて、すべてのファイルを再帰的にコピーしたい場合があります。

特定のファイル拡張子を除くすべてのファイルを検索

これを実現するために、findコマンドを使用します。これは、ファイルまたはフォルダーのパラメーター(ファイル名、拡張子、サイズなど)に基づいてLinuxでファイルおよびフォルダーを検索するために使用されるコマンドツールです。

同様に、検索コマンドで除外するファイルを指定して、ファイルを検索する方法があります。 。 findを使用して特定の拡張子のファイルを検索するための構文 は:

$ find <folder_to_search> -name '*.<extension>'

たとえば、現在のフォルダ内のすべてのMP3ファイルを再帰的に検索するには:

$ find . -name "*.mp3"

ここで、MP3ファイルを除く、フォルダとサブフォルダ内のすべてのファイルを検索するには、「否定」を使用します。 検索の演算子 :

$ find . ! -name "*.mp3"

これで、MP3ファイル以外のすべてが表示されていることがわかります。ただし、この出力は後で「cp」に入力されるため、ファイルのみを表示する必要があります。 。現在、ファイルとフォルダの両方が表示されています(例:「temp1/」 )、同じファイルの繰り返しコピーにつながります。

出力からフォルダを削除するには、引数'-type f'を使用するだけです。 。ここで'f' ファイルを表します。

$ find . ! -name '*.mp3' -type f

これで、フォルダ「test」内に再帰的に取得されたファイルだけができました。 。これで、この出力を「cp」コマンドにパイプ処理できます。 。

ファイルを再帰的にコピーするときに特定のファイル拡張子を除外する

これを行うには、「xargs」を使用します 「cp」を作成するコマンド 「検索」の出力を検討してください その引数として。また、'-t'を使用します ターゲットディレクトリを指定するフラグ。これがないと、プログラムは「検索」の出力を考慮します。 ターゲットディレクトリとして。

$ find <folder_to_search> ! -name '*.<extension>' -type f | xargs cp -t <target_directory>

実際のコマンド。

$ find . ! -name '*.mp3' -type f | xargs cp -t Misc/

したがって、“.mp3”を除いて、再帰的に検出されたすべてのファイル ファイルがフォルダ「その他」にコピーされました 。

結論

この記事では、特定の拡張子のファイルを除外しながら、Linuxでファイルを再帰的にコピーする方法を学びました。また、特定の拡張子のファイルを再帰的にコピーする方法も確認してください。

ご質問やご意見がございましたら、下のコメント欄でお知らせください。


Linux
  1. Inotifywaitを使用して、特定の拡張子のファイルを作成するためのディレクトリを監視する方法は?

  2. サイズと拡張子でファイルを検索する方法は?

  3. ファイル拡張子でファイルを再帰的にコピーする方法は??

  1. Linuxですべてのディレクトリのファイルを再帰的に検索する方法

  2. 特定のファイルを除外しながらrsyncを使用してディレクトリを再帰的にコピーする方法

  3. 特定の拡張子を持つファイルを再帰的に見つける

  1. 特定の拡張子を持つファイルを非表示にする方法は?

  2. ディレクトリ内のファイル サイズがゼロ (0) バイトのすべてのファイルを再帰的に検索する方法

  3. Linuxで特定の日付より古いファイルを削除するにはどうすればよいですか?