如何在bash中收缩大文件?

如何在bash中收缩大文件?,bash,Bash,我有一个文件,我想截断到2kb(即保留前2kb的数据,去掉其余的)。我怎样才能用bash做到这一点 使用dd: dd if=yourfile of=firstLump bs=2k count=1 dd if=/dev/null of=/file/to/truncate seek=1 bs=2k if=输入文件 of=输出文件 bs=块大小 计数=块数 可在Linux和Mac OSX上使用。使用dd: dd if=yourfile of=firstLump bs=2k count=1 dd

我有一个文件,我想截断到2kb(即保留前2kb的数据,去掉其余的)。我怎样才能用bash做到这一点

使用
dd

dd if=yourfile of=firstLump bs=2k count=1
dd if=/dev/null of=/file/to/truncate seek=1 bs=2k
if=输入文件

of=输出文件

bs=块大小

计数=块数

可在Linux和Mac OSX上使用。

使用
dd

dd if=yourfile of=firstLump bs=2k count=1
dd if=/dev/null of=/file/to/truncate seek=1 bs=2k
if=输入文件

of=输出文件

bs=块大小

计数=块数

可在Linux和Mac OSX上使用。

命令是(惊奇,惊奇)

命令是(惊奇,惊奇)


符合标准的方法(不依赖任何纯Linux工具,如
truncate
)是使用
dd

dd if=yourfile of=firstLump bs=2k count=1
dd if=/dev/null of=/file/to/truncate seek=1 bs=2k

与其他的
dd
答案不同,它只复制文件的前2k个,而此答案在该点截断目标文件。

执行此操作的标准兼容方法(不依赖任何仅Linux的工具,如
truncate
)是使用
dd

dd if=yourfile of=firstLump bs=2k count=1
dd if=/dev/null of=/file/to/truncate seek=1 bs=2k

与另一个只复制文件的前2k的
dd
answer不同,这一个在该点截断目标文件。

您可以在纯
bash
中执行类似操作:

IFS= read -r -n 2048 first2k < file
printf "%s" "$first2k" > file

您可以在pure
bash中执行类似操作:

IFS= read -r -n 2048 first2k < file
printf "%s" "$first2k" > file

也就是说,这是一个Linuxim,当然不能保证在所有支持bash的系统上都会出现。也就是说,这是一个Linuxim,当然不能保证在所有支持bash的系统上都会出现。“使用dd”确实是一个正确的答案,如果要实现可移植性的话。然而,这个特殊的用法并不是就地截断操作。@CharlesDuffy哦,我不知道它可以:-),我在Mac的手册页上也看不到它。请启发我/我们!请随意添加您自己的答案或编辑我的答案。谢谢。我已经添加了另一个答案。“使用dd”确实是正确的答案,如果你想要便携的话。然而,这个特殊的用法并不是就地截断操作。@CharlesDuffy哦,我不知道它可以:-),我在Mac的手册页上也看不到它。请启发我/我们!请随意添加您自己的答案或编辑我的答案。谢谢。我添加了另一个答案。这不是一个真正的bash问题,而是一个操作系统问题
bash
本身没有任何内置的截断操作方法;相反,您应该使用bash调用操作系统附带的工具,例如
truncate
dd
。这些工具中有哪些可用,它们有哪些选项,这取决于你的操作系统——你在这里没有指定。这不是一个bash问题,而是一个操作系统问题
bash
本身没有任何内置的截断操作方法;相反,您应该使用bash调用操作系统附带的工具,例如
truncate
dd
。这些工具中有哪些可用,它们有哪些选项,取决于您的操作系统,您在这里没有指定这些操作系统。与其取消IFS,为什么不使用隐含的
REPLY
名称呢?如果不设置名称,
REPLY
不会删除空白。我本来打算进行编辑,但决定保留
first2k
作为问题的更具描述性的变量名称。我也会添加默认值。(另外,我前几天刚从你的回答或评论中了解到,分词只会影响显式名称。)隐式比显式好。。。不用等待。与其取消IFS,为什么不直接使用隐含的
REPLY
名称?如果不设置名称,
REPLY
不会删除空白。我本来打算进行编辑,但决定保留
first2k
作为问题的更具描述性的变量名称。我也会添加默认值。(另外,我前几天刚从你的回答或评论中了解到,分词只会影响显式名称。)隐式比显式好。。。不,等等。