Answers:
对于我接触过的任何Unix或Linux,这都是不可能的。
在某些较旧的Unix下,目录是文件,带有特殊标记,但仍然是文件。例如,您曾经能够cat
在SunOS下使用读取目录。许多现代文件系统可能都具有B +树或其他磁盘上数据结构的目录。因此,将文件转换为目录,反之亦然,总是需要删除并重新创建具有相同名称的文件。
没有这样的命令,因为其中绝对没有意义。您的问题就像是寻求一种将盒子转换成扁平矩形的方法。您将如何处理框中(目录)中的内容?矩形如何与它来自的盒子相对应?
文件和目录具有完全不同的功能。虽然目录确实是 * nix系统中的文件,但它仅适用于系统内部,而不适用于用户(用户)看到的内容。因此,将文件转换为目录,反之亦然,将始终涉及删除文件并创建目录。您可能希望的最好的办法是使用相同的inode,但是再次强调一点。
创建一个函数来执行所需的操作。(bash
或假设使用其他的Bourne / POSIX之类的shell)
$ dir2file() { rmdir -- "$1" && touch -- "$1";}
$ mkdir adir
$ dir2file adir
$ ls -l adir
-rw-r--r-- 1 xtian xtian 0 2014-03-04 14:59 adir
$
我故意使用rmdir
如果adir
不是目录或不为空则失败(否-f
强制)。touch
仅在rmdir
成功时运行。
您可以将函数定义放在shell定制文件中(.bashrc
for bash
)。
--
办?
--
标记将标记结尾,因此即使文件名以开头rmdir
也touch
知道文件名之外的任何内容-
。
对于那些想知道为什么要这样做的人,请遵循以下线程:
显然,固件中的错误使文件的目录条目中的位翻转了,使操作系统认为它是文件夹而不是文件。
尽管我没有问题的Linksys路由器,但是某些事情将所有.jpg文件更改为空文件夹。如果有某种办法可以使NTFS目录条目是文件夹还是文件,那么我想知道这一点。
该长达2年的线程中的一种解决方案表示,如果将包含要使用文件的文件夹的硬盘驱动器连接到运行OS / X的Mac,则Mac将再次将它们视为文件,并且可以复制到Mac上的文件夹中。我没有Mac可以尝试,所以如果有人知道一种方法可以...
首先,在终端获得进入并执行ls -al file
与文件是要转换回一个实际的文件夹中的文件。如果列出了文件和子目录,则意味着您的“文件”以前是一个包含真实内容的文件夹,您可以继续:
执行:
sudo chmod 700 /
要么
sudo chmod 700 file
重新启动系统并重新获得终端访问权并执行:
sudo chmod 744 /
要么
sudo chmod 744 file
记住: “文件”应替换为您要转换回ACTUAL文件夹的文件。
这只是解决此问题的一种任意方法,但是会创建权限异常,您可以使用 fsck -f
来修复(当然是在未安装的情况下)或根据需要手动设置新的权限。
再次,这只是一种行之有效的方法,可以避免删除以前是非空文件夹的文件。
rm -f test && touch test
除此之外,我真的不知道