如何重命名目录,创建标头而不对非常大的文件使用 mv 命令



我是UNIX的新手。我有 5 个文本文件,每个文件有 500M 条记录,我想在不使用 mv 命令的情况下重命名所有 5 个。每个文件中的第一行是列名。我想在重命名所有 5 个文件之前用标题(我想要的文本(替换每个文本文件中的第一行(列名(。

我使用以下脚本来重命名和创建标头。

系统配置:
操作系统: 太阳操作系统
砰��

重命名目录:

mv $file1 $name1

注意:我尝试重命名命令,但它不适用于我的命令。

将第一行替换为标题:
删除第一行:

sed '1d' $name1 > tmpfile
mv tmpfile $name1

在第一行附加文本:

echo "text" | cat - $name1 > text.txt.tmp 
mv text.txt.tmp $name1

我在运行它时没有收到任何错误。问题是执行这些操作需要很长时间。

有没有有效的方法可以做到这一点?

在任何

编程语言中,都没有使用标准化 UNIX 接口向现有文件添加标头的有效方法。

这是因为用于要求操作系统执行文件系统操作的 syscall 接口允许您追加到文件,或将现有字节替换为完全相同长度的新内容 - 但没有标准化接口允许您在文件的开头或中间插入新字节。

现代 Linux 具有少量非常特定的文件系统,有一些非标准的系统调用可用,可以让您添加新块 - 通常一次 4KB - 但是 (1( 这在 SunOS 上不起作用,(2( 不能直接从 bash 访问,以及 (3( 如果要插入的内容不是块大小的精确倍数,并且对齐在文件的块大小边界上,则不起作用。

相关内容

  • 没有找到相关文章

最新更新