gpt4 book ai didi

c - 在 UNIX 中将文件从一个位置移动到另一个位置

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:27:30 28 4
gpt4 key购买 nike

我必须用一些命令在 unix 中实现一个 shell

我想像 mv -t 一样将多个文件移动到一个文件夹位置。

问题是重命名功能,只是重命名一个文件不要移动那个文件。

void mv_t()
{
int mutat;
char mvFile_name1[256];
char mvFile_name2[256];
int nr=0;

printf("How many files you want to move: ");
fflush(stdin);
scanf("%d", &nr);

printf("The file where you move: ");
fflush(stdin);
scanf("%s", &mvFile_name1);

for(i=0; i<nr; i++)
{
printf("The file you want to move: ");
fflush(stdin);
scanf("%s", &mvFile_name2);

mutat = rename(mvFile_name1, mvFile_name2);
if(mutat != 0)
perror("Error");
}
}

这是我写的。在“for”中,他获取 mvFile_name1 并将其重命名为 mvFile_name2,然后他就没有该文件以前的名称了。但如果这可行,仍然不要移动 mvFile_name1 中的文件,他只是将它们重命名为 mvFile_name1。

最佳答案

rename() 的参数顺序错误,交换它们。

它们是:

rename(oldpath, newpath);

您还需要通过剥离任何路径来构造新路径mvFile_name2 中的(/之前的部分)并将其替换为mvFile_name1.

您还应该验证 mvFile_name1 是一个目录。

所以如果这个人进入:

1
/tmp
/some/place/this.txt

那么你应该这样做:

rename(/some/place/this.txt, /tmp/this.txt);

此外,如果旧路径和新路径在不同的磁盘上,这将失败,但这可能比您想要处理的更复杂。

此外,@iharob 所说的一切。

关于c - 在 UNIX 中将文件从一个位置移动到另一个位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34723315/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com