我正在尝试将一个目录及其子目录克隆到另一个目录中。我有数百个带有子目录的音乐目录,我想将它们从 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
启用它。