广告
返回顶部
首页 > 资讯 > 精选 >Shell脚本中怎么创建指定大小的文件
  • 234
分享到

Shell脚本中怎么创建指定大小的文件

2023-06-09 18:06:21 234人浏览 泡泡鱼
摘要

shell脚本中怎么创建指定大小的文件,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。代码如下:$ dd if=/dev/zero of=tmp.5G bs=1G count=5

shell脚本中怎么创建指定大小的文件,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

代码如下:


$ dd if=/dev/zero of=tmp.5G bs=1G count=5 


解释一下这里用到的参数

代码如下:


if=FILE      : 指定输入文件,若不指定则从标注输入读取。这里指定为/dev/zero是linux的一个伪文件,它可以产生连续不断的null流(二进制的0) 
of=FILE      : 指定输出文件,若不指定则输出到标准输出 
bs=BYTES     : 每次读写的字节数,可以使用单位K、M、G等等。另外输入输出可以分别用ibs、obs指定,若使用bs,则表示是ibs和obs都是用该参数 
count=BLOCKS : 读取的block数,block的大小由ibs指定(只针对输入参数) 


这样上面生成5G文件的命令就很好理解了,即从/dev/null每次读取1G数据,读5次,写入tmp.5G这个文件

再看下面一个问题

代码如下:


将file.in的前1M追加到file.out的末尾

命令如下

代码如下:


$ file_out_size=`du -b file.out | awk '{print $1}'` 
$ dd if=./file.in ibs=1M count=1 of=./file.out seek=1 obs=$file_out_size


这里ibs和obs设置为了不同的值,和前面的命令相比,只多了一个seek参数

代码如下:


seek=BLOCKS : 在拷贝数据之前,从输出文件开头跳过BLOCKS个block,block的大小由obs指定 

命令的意思就是从file.in读取1个1M的数据块写入file.out,不过写入位置并不在file.out的开头,而是在1*$file_out_size字节偏移处(也就是文件末尾)

在此基础上再增加一个要求

将file.in的第3M追加到file.out的末尾

代码如下:


$ file_out_size=`du -b file.out | awk '{print $1}'` 
$ dd if=./file.in skip=2 ibs=1M count=1 of=./file.out seek=1 obs=$file_out_size 

这里多了一个参数skip

代码如下:


skip=BLOCKS : 拷贝数据前,从输入文件跳过BLOCKS个block,block的大小由ibs指定。这个参数和seek是对应的


上面命令的意思就是,从文件file.in开始跳过2*1M,拷贝1*1M数据,写入文件file.out的1*$file_out_size偏移处

这样基本的参数都介绍全了,无非就是设置输入输出文件以及各自的偏移,设置读写数据块大小和读取数据块个数,下面总结一下

代码如下:


输入参数: 
    if 
    skip 
    ibs 
    count 
输出参数: 
    of 
    seek 
    obs 

最后来一道终极题。前面创建的都是null流,这次换一个

代码如下:


指定某个字符,创建一个全是这个字符的指定大小的文件。比如创建一个文件,大小为123456字节,每个字节都是字符A


这问题看似没什么意义,但有时候确实需要用到。比如我通过/dev/null创建了一个1G的文件,但是出于测试需求我想修改中间100M数据,这时我需要创建一个100M的文件,将该文件写入到那个1G文件的指定位置,而这个100M的文件是不能从/dev/null创建的,否则达不到修改的目的,这时候就需要这样的功能了

话不多说,直接上脚本,有了前面的基础,相信都能看得懂

代码如下:


#!/bin/bash 
if [ $# -ne 3 ];then 
    echo "usage : $0 character out_file file_size(Byte)" 
    exit 1 
fi 
 
echo "$1" | grep -q "^[a-zA-Z]$" 
if [ $? -ne 0 ];then 
    echo "arg1 must be character" 
    exit 1 
fi 
 
character=$1 
out_file=$2 
target_size=$3 
 
# echo输出默认是带'\n'字符的,所以需要通过dd指定输入字节数 
echo "$character" | dd of=$out_file ibs=1 count=1 
while true 
do 
    cur_size=`du -b $out_file | awk '{print $1}'` 
    if [ $cur_size -ge $target_size ];then 
        break 
    fi 
    remain_size=$((target_size-$cur_size)) 
    if [ $remain_size -ge $cur_size ];then 
        input_size=$cur_size 
    else 
        input_size=$remain_size 
    fi 
    dd if=$out_file ibs=$input_size count=1 of=$out_file seek=1 obs=$cur_size || exit 1 
done 

看完上述内容,你们掌握Shell脚本中怎么创建指定大小的文件的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: Shell脚本中怎么创建指定大小的文件

本文链接: https://www.lsjlt.com/news/257167.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Shell脚本中怎么创建指定大小的文件
    Shell脚本中怎么创建指定大小的文件,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。代码如下:$ dd if=/dev/zero of=tmp.5G bs=1G count=5...
    99+
    2023-06-09
  • Shell脚本创建指定大小文件的测试数据
    我们在测试或调试的时候,有时候会需要生成某个size的文件,比如在测试存储系统时,需要将磁盘剩余空间减少5G,最简单的办法就是拷贝一个5G的文件过来,但是从哪儿去弄这样大小的文件呢,或许你想到随便找一个文件...
    99+
    2022-06-04
    脚本 测试数据 大小
  • 怎么用Shell脚本自动删除指定大小以上的备份文件
    这篇文章主要介绍“怎么用Shell脚本自动删除指定大小以上的备份文件”,在日常操作中,相信很多人在怎么用Shell脚本自动删除指定大小以上的备份文件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用Shel...
    99+
    2023-06-09
  • Shell脚本自动删除指定大小以上的备份文件
    最近本地虚拟机的空间老是被备份给占满,为了偷懒不想自己天天登录上去清除,才写了这个自动清理脚本. 系统:centos 5.x 脚本内容: cat make_room.sh #!/bin/bash #si...
    99+
    2022-06-04
    脚本 备份文件 大小
  • 使用shell脚本怎么统计文件大小
    这期内容当中小编将会给大家带来有关使用shell脚本怎么统计文件大小,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。统计文件大小需求:每小时执行一次脚本,当时间为0点或12点时,清空/data/logs目录...
    99+
    2023-06-09
  • shell脚本实现统计文件大小、批量创建用户的示例
    统计文件大小 需求: 每小时执行一次脚本,当时间为0点或12点时,清空/data/logs目录下所有日志文件的内容(包括该目录下的子目录里的文件),其他时间只需统计每个文件UDafukeeGr的大小,一个文件一行,记...
    99+
    2022-06-04
    shell统计文件大小 shell 批量创建用户
  • Shell脚本怎么定期清空大于1G的日志文件
    本篇内容介绍了“Shell脚本怎么定期清空大于1G的日志文件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一个关于如何在指定文件大于1GB后...
    99+
    2023-06-09
  • python怎么在指定目录中创建文件
    在Python中,可以使用`open()`函数来创建文件。指定目录中创建文件的方法是,在`open()`函数中传入文件的路径和名称。...
    99+
    2023-09-14
    python
  • Win10怎么使用命令创建自定义大小的空文件
    这篇文章主要介绍Win10怎么使用命令创建自定义大小的空文件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!创建空文件操作步骤右键开始按钮,选择“Windows PowerShell(管理员)”或“CMD命令提示符”在...
    99+
    2023-06-10
  • Linux下怎么查看指定文件夹和文件的大小
    本篇内容介绍了“Linux下怎么查看指定文件夹和文件的大小”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!df命令:查看目前所有文件系统的可用...
    99+
    2023-06-13
  • linux中如何保留文件系统下剩余指定数目文件的shell脚本
    这篇文章主要介绍了linux中如何保留文件系统下剩余指定数目文件的shell脚本,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。例子:代码如下:#!/bin/bash #---...
    99+
    2023-06-09
  • shell脚本怎么读取properties文件中的值
    本篇内容主要讲解“shell脚本怎么读取properties文件中的值”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“shell脚本怎么读取properties文件中的值”吧!如下面代码所示的pr...
    99+
    2023-06-29
  • 怎么用VBS脚本删除指定以外的文件或文件夹
    本篇内容介绍了“怎么用VBS脚本删除指定以外的文件或文件夹”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Option Explic...
    99+
    2023-06-08
  • 在Linux中创建自定义脚本和创建systemd服务单元文件的方法是什么
    今天就跟大家聊聊有关在Linux中创建自定义脚本和创建systemd服务单元文件的方法是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。前言systemd是Linux操作系统的系统...
    99+
    2023-06-26
  • 关于解决shell脚本中无法用cd命令,在指定文件下运行指定文件的解决方法分享
    本人以编写shell脚本,一键安装配置php7.3为例 前提:本脚本在Linux  /opt/目录下运行 首先解压php压缩包 ###### 配置nginx,带lua支持 ##############################...
    99+
    2023-09-06
    php linux 服务器 bash
  • Python编写shell脚本中常用的文件是怎么样的
    这篇文章将为大家详细讲解有关Python编写shell脚本中常用的文件是怎么样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。在Python编写shell脚本中我们经常会用到一些相关的正则表...
    99+
    2023-06-17
  • 使用bat脚本怎么批量提取指定目录下的文件名
    使用bat脚本怎么批量提取指定目录下的文件名?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。核心代码@echo offecho text input...
    99+
    2023-06-08
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作