linux 将一个文件分解成多个不同名文件

Posted Malphite

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux 将一个文件分解成多个不同名文件相关的知识,希望对你有一定的参考价值。

1.通过c直接实现

技术分享
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

int fileNum=0;
char fileNam[10];

char fileName(){
    fileNam[10]=0;
    fileNum += 1;
    char str[4];
    char s1[]="./image/";
    char s2[]=".yuv";
    sprintf(str,"%d",fileNum);
    sprintf(fileNam,"%s%s%s",s1,str,s2);     
}

int main(int argc,char* argv[])
{
    int fd_src,fd_dst;
    char buf[245120];
    int n;
    
    if((fd_src=open("./raw.data",O_RDONLY))<0)
    {
        perror("open src");
        exit(EXIT_FAILURE);
    }
    
    while((n=read(fd_src,buf,sizeof(buf)))>0){
        if (n != 245120)
        {
            perror("file size small");
            close(fd_src);
            exit(EXIT_FAILURE);
        }

        //lseek(fd_src,245120,SEEK_CUR);
        fileName();    
                
        if (fd_dst = open(fileNam,O_CREAT|O_WRONLY,0666)<0)
        {
            perror("open dst fail");
            close(fd_src);
            exit(EXIT_FAILURE);
        }
    
        write(fd_dst,buf,n);
    
        printf("copy successfully\n");
        close(fd_dst);
        system("./move.sh");
    }
    printf("copy successfully\n");
    close(fd_src);
    exit(EXIT_SUCCESS);    
}
View Code

2.通过调用system函数执行脚本

技术分享
#! /bin/sh 

file_name(){
    rm ./image/1.txt
    touch ./image/1.txt
    chmod 777 ./image/1.txt
    ls -l image | cut -d   -f 10 | cut -d . -f 1 > ./image/1.txt
    num=$(tail ./image/1.txt -n 1)
    echo "$num"
    num=$(($num+1))
    echo "$num"
}
move (){
    file_name
    mv ./image/0.yuv ./image/"$num".yuv    
}
move
View Code

 

以上是关于linux 将一个文件分解成多个不同名文件的主要内容,如果未能解决你的问题,请参考以下文章

我如何每行读取一个文本文件,然后将字符串分解成单个单词(分成一个树集)而不重复?

matlab中将一个txt文件按要求分解成多个。如图。

C# 将一个DataTable分解成多个DataTable

在 Linux 中选择多个同名的可执行文件

如何将文本文件分解成更小的块(在 Unix 上使用 C++)?

linux学习