【发布时间】:2018-05-14 13:01:31
【问题描述】:
我在将数据从一个目录移动到另一个目录时遇到问题。 我想做如下(bash),但在 C++ 中:
mv /testdir/* /testdest/
所以它应该基本上将位于/testdir 的所有文件移动到/testdest。
我已经在 C++ 中尝试过rename,但它实际上并没有移动数据,它只是重命名目录。
我当前的代码:
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <iostream>
#include <unistd.h>
#include <dirent.h>
#include <iterator>
#include <cstdlib>
#include <cstring>
#include <string>
#include <sys/stat.h>
#include <syslog.h>
#include <fstream>
using namespace std;
int main( int argc, char *argv[] )
{
rename (argv[1], argv[2])
}
我执行如下:
./static-mv /testdir/ /testdest/
这样做的效果是将/testdir/ 重命名为/testdest/(及其内容)。
在此之后,/testdir/ 不再可用,这不是预期的结果。
【问题讨论】:
-
您必须编写一个循环,这也不是 bash 中的单个操作。
-
mv非常重要,因为它可以处理大量选项。我建议查看std::filesystem::rename和directory_iterator -
提示:
mv /testdir/* /testdest/扩展为参数mv/testdir/Atestdir\Btestdir\Ctestdest -
所以....如果我想移动所有文件,我实际上需要一个一个地执行此操作吗? (循环中?)
-
mv如果文件位于同一文件系统中,则仅更改目录条目,但如果跨越边界则必须移动数据。