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


13

我想将所有意外插入到flac文件夹中的mp3放到其父文件夹中。

文件夹有多深都无所谓,我只想将匹配的文件恰好向上移动一个目录。

这是我选择文件的方式:

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

这在我的音乐文件夹中有效,但是我被卡在这里。我找到的所有解决方案,要么将文件移动到当前文件夹的父目录,要么需要一些固定的结构。

Answers:


24

尝试:

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

怎么运行的

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

1
真好!正是我想要的。
Marcel

+是仪式主义\的替代方案;?
rackandboneman

@ Johnn1024假定flac路径中没有嵌套目录,路径相同,*/flac/flac/x.mp3否则x.mp3文件将向上移动两级。
αғsнιη

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.