我有一个 txt 文件,它有 Unix 换行符,需要有 Windows 换行符。我尝试这样做,unix2dos filename.txt
但得到的是Unix2Dos: Can't stat 'filename.txt'
。事实上,Can't stat 'xxx'
无论xxx
我输入什么,它都会说。
我尝试用谷歌搜索此错误,但找不到任何与我的情况相关的内容,也没有关于可能导致此错误的一般描述。
如果有任何区别,我在 Windows 7 上并运行我下载的某个版本的 Unix2Dos。
答案1
错误来自这部分(查看Unix2Dos的源代码):
if (stat (path=*++argv, &s_buf) != -1)
{
printf ("Unix2Dos: Cleaning file %s ...\n", path);
if (u2dos (path))
{
fprintf (stderr, "Unix2Dos: Problems cleaning file %s.\n", path);
exit (1);
}
}
else
{
fprintf (stderr, "Unix2Dos: Can't stat '%s'.\n", path);
exit (1);
}
这意味着,统计函数无法执行:
这些函数返回 stat 指向的缓冲区中有关文件的信息。文件本身不需要任何权限,但(对于 stat()、fstatat() 和 lstat())路径名中指向该文件的所有目录都需要执行(搜索)权限。
[由@ibson 编辑]
在这个特殊情况下,文件位于 Dropbox 目录的子目录中。将文件移到其他地方后,Unix2Dos 能够正常工作。显然,Windows 7 上的 Dropbox 对目录权限做了一些操作。