ngo*_*eff 17 linux command-line
我有一个 500G 的文件,我想在 linux 中拆分它,但是我没有另外 500G 的可用空间来运行split(1)
.
是否有工具或脚本可以在使用最少的额外空间的情况下将文件就地拆分为 1G 块?
whi*_*ark 15
#!/bin/bash
# (c) whitequark 2010
set -e
if [ $# != 2 ]; then
echo "Usage: $0 <filename> <part size>"
echo " This script will split file to multiple parts, starting from"
echo " the end, and truncating the original file in process."
echo " Part size is specified in bytes."
echo " Use at your own risk."
exit 0
fi
filename=$1
partsize=$2
size=$(stat -c '%s' "${filename}")
parts=$(($size / $partsize))
do_split() {
_part=$1
_size=$2
echo "Splitting part $_part"
echo $(($partsize * ($_part - 1)))
dd if="${filename}" of="${filename}.$(printf '%04d' $_part)" \
count=1 bs=$partsize skip=$(($_part - 1))
echo "Truncating source file"
truncate "${filename}" --size="-$_size"
}
lastsize=$(($size % $partsize))
if [ $lastsize != 0 ]; then
do_split $(($parts + 1)) $lastsize
fi
for i in $(seq $parts -1 1); do
do_split $i $partsize
done
rm "${filename}"
Run Code Online (Sandbox Code Playgroud)
gedit 在反汇编后成功运行。
归档时间: |
|
查看次数: |
3003 次 |
最近记录: |