将多个文件硬链接/软链接到一个文件

将多个文件硬链接/软链接到一个文件

我的一个文件夹中有很多文件。我想将所有这些文件连接到一个文件。例如 cat * > Final_file;但这会增加磁盘空间并且也会消耗时间。有没有办法可以将所有文件硬链接/软链接到final_file?例如ln*final_file。

答案1

有了链接,恐怕这是不可能的。但是,您可以使用命名管道。例子:

# create some dummy files
echo alpha >a
echo beta  >b
echo gamma >c

# create named pipe
mkfifo allfiles

# concatenate files into pipe
cat a b c >allfiles

最后一个调用将阻塞,直到某个进程从管道中读取数据然后退出。对于连续操作,可以使用循环,该循环等待进程读取并重新开始。

while true; do
  cat a b c >allfiles
done

答案2

这不可能。

N 个文件意味着 N 个 inode。根据定义,硬链接只是同一 inode 的不同名称。符号链接是指向某个 inode(其目标)的文件。无论是软链接还是硬链接,链接都可以引用单个索引节点。

答案3

直接地说,不……您不能硬/软链接到单个文件。链接只不过是从一个文件到另一个文件的指针。

现在,如果您担心空间问题并想要释放空间,您可以执行以下操作:

for i in *
do
    cat < "$i" >> destination_file &&
      rm -f -- "$i"
done

基本上,它将输出附加到destination_file,然后删除该文件。我还假设您不需要原始文件。

相关内容