linux 读取文件

linux读取文件是经常要用到的操作,以下示例(说明看注释):

#读取文件snlist.txt中的每一行内容赋给sn变量
while read sn
do
    echo ">>>>>>>sn is $sn"
    # 判断是否是文件
    if [ ! -d "$sn" ];then
    echo $sn "not existed"
    else
        # 对sn进行"/"拆分并获取最后一个结果,如lib/aa结果为aa
    filename=`echo $sn | awk -F "/" ‘{print $NF}‘`
    echo ">>>>>>> filename is $filename"
    if [ ! #filename ];then
        echo "cur filename is empty"
        continue
    fi
        # 统计名字为sn目录下的文件数量,不包含文件夹
    count=`ls -l $sn | grep "^-" | wc -l`
    if [ $count -ge 1 ];then
            # 将名字为$sn目录下的第一层下面(即当前目录,不算子目录)的所有文件的名字记录到 $filename.txt文件中
            find $sn/ -maxdepth 1 -type f > $filename.txt
    fi
        # 复制 $filename.txt到lib/filename/目录下
    cp $filename.txt lib/filename/
        # 删除 $filename.txt
    rm -rf $filename.txt
    fi
done < snlist.txt

上述脚本功能是将snlist.txt文件(记录了某些文件目录名称)中对应的文件目录下的所有文件的名字记录到xxx.txt中,并将其复制到指定的目录下

原文地址:https://www.cnblogs.com/kingsonfu/p/11734282.html

时间: 2024-10-19 16:15:30

linux 读取文件的相关文章

linux读取文件的流程

最近发现一个好玩的东西,就是mysql的 我删除了一个idb文件通过rm,发现我查表的时候数据还是存在的,今天就整理了一下这个东西,inode文件描述 通过查找资料发现:文件是这么被访问的,物理的结构就是/home/stu01 /home/stu02 系统怎么记得呢 首先会产生一个inode描述符,然后跟硬盘在一个地方,每次系统访问的时候即我们使用cat查看的时候都会读取这个对应的inode描述符,然后访问文件. 好了下面就逐个说明:文件系统将硬盘划分为块,编号从0开始到整个磁盘的最大块数,0块

Linux读取文件路径问题

问题是这样的: 首先终端上有当前路径显示,我有个可执行程序代码是这样的: FILE fp  = fopen(filename, "rb"); if(fp == NULL)     printf("cannot open\n"); 编译出来的可执行程序(elf格式)比如在/home/username下面.filename中的这个文件也是在username下. 我偶然这样运行: 终端当前路径是:/home ./username/my_elf 那么就会导致文件无法打开,其

Linux中逐行读取文件的方法

  Linux中逐行读取文件的方法             在linux中有很多方法逐行读取一个文件的方法,其中最常用的就是下面的脚本里的方法,而且是效率最高,使用最多的方法.为了给大家一个直观的感受,我们将通过生成一个大的文件的方式来检验各种方法的执行效率. 方法1:while循环中执行效率最高,最常用的方法. function while_read_LINE_bottm(){ While read LINE do echo $LINE done   < $FILENAME } 注释:我习惯把

linux 读取部分文件内容

一般我们在linux上读取文件,是用vi工具,如果是写shell 脚本时,一般式通过cat 再 使用管道来达到流的处理. 但如果文件太大,单纯的cat 可能会使用过多的内存,而且实现上还需要后续的加工,不大可取. 下面我分享两个方法来读取部分文件. 方法一 sed -n "10,20p" /opt/chenfool.txt 方法二 awk 'NR==10,NR==20{print}' /opt/chenfoo.txt 上面两个命令就是读取/opt/chenfool.txt 文件的10到

Linux C 读取文件夹下所有文件(包括子文件夹)的文件名(转)

Linux C  下面读取文件夹要用到结构体struct dirent,在头#include <dirent.h>中,如下: 1 #include <dirent.h> 2 struct dirent 3 { 4 long d_ino; /* inode number 索引节点号 */ 5 off_t d_off; /* offset to this dirent 在目录文件中的偏移 */ 6 unsigned short d_reclen; /* length of this d

Linux shell逐行读取文件的方法

Linux shell逐行读取文件的方法 在Linux中有很多方法逐行读取一个文件的方法,其中最常用的就是下面的脚本里的方法,而且是效率最高,使用最多的方法.为了给大家一个直观的感受,我们将通过生成一个大的文件的方式来检验各种方法的执行效率. 方法1:while循环中执行效率最高,最常用的方法. function while_read_LINE_bottm(){ While read LINE doecho $LINEdone  < $FILENAME}         注释:我习惯把这种方式叫

windows和linux下读取文件乱码的终极解决办法!

乱码是个很恶心的问题. windows和linux读取txt文件,一旦读取了,编码发生改变,就无法再还原了,只有重启项目. 网上有很多方法都是读取文件头,方法很好,但是亲测都不能用(右移8位判断0xff的,取3个字节的-1,-2的,大体上网上最多就这两种). 后来偶然发现一个方法,CharsetPrinter. 这个方法需要引入jar包,非常好用. public static String guessEncoding(String filename) { try { CharsetPrinter

linux学习(35):多线程读取文件

多线程读取文件: # _*_coding:utf-8_*_ import time, threading, ConfigParser ''' Reader类,继承threading.Thread @__init__方法初始化 @run方法实现了读文件的操作 ''' class Reader(threading.Thread): def __init__(self, file_name, start_pos, end_pos): super(Reader, self).__init__() sel

linux shell 逐行读取文件行

读取文件行 for 命令替换 代码块重定向 while 管道符 代码块重定向 for IFS=$'\n' for line in `ls -l` do (( count++ )) done echo $count 注意: for读取时,自动按空格作为间隔符.因此需要将IFS定义为按换行符分隔 ls -l > forout.log maxlength=$(wc -l < forout.log) for i in `seq $maxlength` do (( count++ )) done <