如何将某些文件移动到其父目录?

Mar*_*cel 13 command-line files directory find mv

我想将所有意外放入 flac 文件夹中的 mp3 提取到它们的父文件夹中。

文件夹的深度无关紧要,我只想将匹配的文件向上移动一个目录。

以下是我选择文件的方式:

find . -path "*/flac/*" -name '*.mp3'
Run Code Online (Sandbox Code Playgroud)

这适用于我的音乐文件夹,但我被困在这里。我找到的所有解决方案,要么将文件移动到当前文件夹的父文件夹,要么需要一些固定结构。

Joh*_*024 24

尝试:

find . -path "*/flac/*" -name '*.mp3' -execdir mv -t ../ {} +
Run Code Online (Sandbox Code Playgroud)

这个怎么运作

  1. find .

    启动在当前目录上工作的 find 命令。

  2. -path "*/flac/*"

    仅选择flac路径中的文件

  3. -name '*.mp3'

    仅选择扩展名为.mp3.

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

    对于找到的任何文件mv,从文件所在的目录运行命令并将文件移动到父目录。

    除了使这项特定任务变得容易之外,该选项-execdir还比传统-exec选项更安全。

简化

find . -path "*/flac/*.mp3" -execdir mv -t ../ {} +
Run Code Online (Sandbox Code Playgroud)