对于这里的专家来说应该是一个简单的问题,尽管很难用文字解释它,所以希望这是清楚的。我在一个盒子上有两个目录,上面有一些 unix 的味道。我有一个脚本,我想用它来将所有文件和目录从一个位置移动到另一个位置。
首先是目录外观的示例:
目录A:final/results/2012/2012-02/2012-02-25/name/files
目录B:test/results/2012/2012-02/2012-02-24/name/files
所以你会发现它们非常相似。我想要做的是将目录 B 2012 目录中的所有内容递归地移动到目录 A 的同一级别。因此,您最终会得到:
一些项目/结果/2012/2012-02/2012-02-25/名称/文件
一些项目/结果/2012/2012-02/2012-02-24/名称/文件
ETC。
不过,我希望这个脚本能够面向未来,这意味着我不希望 2012 年被硬编码。此外,到月底时,您可能会拥有两个不同月份的数据,并且都需要复制到 2012 目录中。这是我在 shell 脚本文件中使用的命令:
CONS="/someproject";
ROOT="/test";
/bin/cp -r ${ROOT}/results/* ${CONS}/results/*
Run Code Online (Sandbox Code Playgroud)
但这导致:
/最终/结果/2012/2012-02/2012-02-25/名称/文件
和
/最终/结果/2012/2012/2012-02/2012-02-24/名称/文件
因此,正如我希望清楚的那样,它的开始水平也低于我想要的水平。如果他们能理解我想要解释的内容,谁能告诉我我做错了什么。如果不清楚,我很抱歉。我确信这是一个相当简单的修复,但我不知道该怎么做。Shell 脚本不是我的强项。
一张海报建议 rsync,这有点过分了。
cp -rp 会正常工作。如果你想移动文件,只需 mv 目录——它及其下的所有内容也会移动。
这里唯一真正的问题是在原始脚本的命令行中使用终止 * 。您不需要 *,您只是尝试将目录传递给 cp 命令,而不是尝试将源中已有的所有文件的名称(更重要的是目标)传递给它。
归档时间: |
|
查看次数: |
6179 次 |
最近记录: |