我正在编写一个小程序,通过创建新目录并根据文件类型在其中存储文件来组织 Linux 中的目录。我知道我需要使用 rename()
功能,但我怎样才能继续移动不同名称的文件?
假设我有一个 .mkv
文件在我的目录中。我的程序检测文件类型并将文件移动到名为 video
的目录中(在我当前工作的目录中)。如何传递文件名,以便在移动文件时保留其名称?
以下是我对它应该如何工作的最佳猜测,但显然无法编译。我怎样才能以可以编译的方式复制它?
我已经有一个循环来运行 readdir()
,并在每个循环中检测每个条目的文件类型并使用该文件类型将文件移动到另一个目录中,因此 rename()
在 readdir()
内的 if 语句内被调用环形。
DIR *d;
struct dirent *dp;
d = opendir(".");
//if statement with function to find file type
//if the file is an .mkv, it runs:
rename(dp->d_name, "./video/%s", dp->d_name);
//how can I do this in a way that will compile?
例子:
如果我有一个名为 scarface.mkv
的文件,它会创建一个目录video
(已经完成)并移动scarface.mkv
进入video
目录。
最佳答案
你能不能提供完整的相关代码?您没有在此处初始化 dp,而是在重命名调用中使用它。
rename 有两个参数,都是指向字符串的指针(即字符数组)。您的代码使用 3。
%s 看起来像一个格式字符串,但你没有用例如扩展它sprintf 和一个额外的参数来替换 %s。
关于c - 将文件移动到不同的 linux 目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43553888/