2011-02-23 71 views
6

在Linux(和/或其他Unix)的「收縮」文件中是否有可能從開始?我想將它用於持久隊列(沒有現有的實現適合我的需求)。從文件結尾我猜truncate()是可能的。從linux上開始收縮(truncate)文件

+0

我寫了這篇文章後,開始用google搜索'truncate beginning',看來這是不可能的。 – woky 2011-02-23 23:07:02

回答

-5

我已經被截斷指定的參數文件,使用下面的Python腳本64個000 000字節:

#!/usr/bin/env python 

import sys 
import os 

file = sys.argv[1] 
f = os.open(file, os.O_RDWR) 
os.ftruncate(f, 64000000) 
os.close(f) 
+0

這將會截斷文件的結尾,並且OP特意詢問關閉文件的開頭。 – rascalking 2012-03-13 14:25:20

-2

是的,你可以使用cuttail刪除文件的一部分。

cut -b 17- input_file
tail -c +17 input_file

這將輸出的INPUT_FILE開始在第17字節,有效地除去前16個字節的文件的內容。請注意,cut示例還會在輸出中添加換行符。

+0

我有興趣通過某些系統調用來高效地就地更新文件。你的建議不是這樣。 – woky 2015-08-26 08:19:32

+0

在這種情況下,您可以通過'strace'查看上述命令正在執行的系統調用,並僅執行操作的「肉」,而不是執行所有命令行解析等。 – MikeK 2015-08-26 16:06:10