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


13

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

フォルダの深さは問題ではありません。一致するファイルを1つ上のディレクトリに移動するだけです。

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

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

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

回答:


24

試してください:

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 ../ {} +

1
いいね!まさに私が望むことをします。
マルセル

+は、儀式的な\の代替です。?
rackandboneman

@ Johnn1024はflac、パスが同じでネストされたディレクトリが存在しないと仮定します。*/flac/flac/x.mp3そうでない場合、x.mp3ファイルは2レベル上に移動します。
αғsнιη

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.