如何将目录列表克隆到另一个目录

如何将目录列表克隆到另一个目录

我正在尝试将一个目录及其子目录克隆到另一个目录中。我有数百个带有子目录的音乐目录,我想将它们从 flac 转换为 ogg。我希望将 /Music 下的所有音乐子目录克隆到 /Music/Oggs/,这样当我进行转换时,所有文件都将写入相同的目录名。以下是我所拥有的:

/音乐/Van_Halen_唱片/1980 妇女与儿童第一/

我需要的是将目录克隆到此处:

/音乐/Oggs/Van_Halen_Discography/1980 妇女与儿童优先/

我尝试使用“find /Music -type d |cat > /Music/Oggs”

但它没有起作用,我错过了什么?谢谢

答案1

您可以按如下方式使用 rsync。

 rsync -av -f"+ */" -f"- *" /path/to/Music/ /path/to/Music/oggs

这里-a告诉 rsync 递归遍历目录并保留链接、权限和所有权,同时v使其详细。-f是一个过滤器,第一个参数包括所有目录,第二个参数排除所有文件。如果您不熟悉 rsync,我建议您先尝试一个小示例。

答案2

有一个简单的方法,假设您处于~/Music/当前 shell 中。

mkdir Oggs            # In case you do not have done before    
cp -rp !(Oggs) Oggs  
  • cp是 Linux 中用于复制文件和目录的常规命令
  • -rp或者如果您愿意,-r -p可以选择 r通过目录进行访问并 p保留时间访问、所有权...
    使用man cp以获得更完整的见解。
  • !(Oggs) 棘手!否定括号内的内容:所以您告诉复制所有文件而Oggs不是Oggs

注意:这需要shopt extglob打开,如果被禁用,请使用shopt -s extglob启用它。

相关内容