我的一个文件夹中有很多文件。我想将所有这些文件连接到一个文件。例如 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,然后删除该文件。我还假设您不需要原始文件。