web-dev-qa-db-ja.com

いくつかのファイルを親ディレクトリに移動する方法は?

誤ってflacフォルダーに入れられたすべてのmp3を親フォルダーに引き出したいです。

フォルダの深さは重要ではありません一致するファイルをちょうど1つ上のディレクトリに移動したいです

ファイルを選択する方法は次のとおりです。

find . -path "*/flac/*" -name '*.mp3'

これは私の音楽フォルダから動作しますが、私はここで立ち往生しています。私が見つけたすべてのソリューションは、ファイルを現在のフォルダーの親に移動するか、何らかの固定構造を必要とします。

13
Marcel

試してください:

find . -path "*/flac/*" -name '*.mp3' -execdir mv -t ../ {} +

使い方

  1. find .

    現在のディレクトリで動作する検索コマンドを開始します。

  2. -path "*/flac/*"

    パスにflacが含まれるファイルのみを選択します

  3. -name '*.mp3'

    拡張子が.mp3のファイルのみを選択します。

  4. -execdir mv -t ../ {} +

    見つかったファイルについては、ファイルがあるディレクトリからmvコマンドを実行し、ファイルを親ディレクトリに移動します。

    この特定のタスクを簡単にすることに加えて、オプション-execdirは従来の-execオプションよりも安全です。

単純化

find . -path "*/flac/*.mp3" -execdir mv -t ../ {} +
24
John1024