linux中使用shell获取文件的大小|linux shell 如何比较2个文件最后修改时间的大小

linux中使用shell获取文件的大小|linux shell 如何比较2个文件最后修改时间的大小的第1张示图

⑴ linux shell 如何比较2个文件最后修改时间的大小

仅攻参考#!/bin/bash – # 获取文件列表,并删除第一行的total *** filelist=`ls -lt –full-time $* | sed '1d'`time=()file=()#修改shell的字段分割符IFS=$'\n'for f in ${filelist}do#取出每行的文件名字段,放入数组file中 filename=`echo $f | awk '{printf("%s", $9);}'` file+=($filename)#取出每行的时间字段,转换成EPOCH秒数值(方便比较),放入数组time中 date_modified=`echo $f | awk '{printf("%s %s", $6, $7);}'` timestr=`date –date="$date_modified" +%s` time+=($timestr)done#取出数组中元素个数,即文件数#数组file和数组time中每个元素一一对应,即一个文件对应其修改时间值cnt=${#file[*]}for((i=0;i<$cnt-1;i++))do#如果前者的修改时间大于后者,则输出提示 if [ ${time[$i]} -gt ${time[$i+1]} ];then echo "Modification time: ${file[$i]} > ${file[$i+1]}" fidone

⑵ 如何在 Linux Shell 编程中优雅地获取单个文件大小

-sha.txt

获取a.txt文件的大小

⑶ linux的shell 脚本里怎么用if 判断文件大小呀

find有一个参数 -size +10000M 你可以定义一个变量 它的值为查找目录下 是否满足同时名字叫123.cap 并且尺寸大于10000M的是就赋予var先执行tcpmp 后台运行然后做一个循环 每隔一秒判断这个varvar=$(find . -name "123.cap" -size +10000M)判断这个var是否不为空当不为空 那么代表文件超出10g了 那么就完毕吧 exit思路这样 你自己试试看

⑷ linux shell中利用 $ filename.sh (参数)的方式获得参数

compr.sh:

#!/bin/bashif["X$1"="X"];thenecho"Usage:$0filename"exit1fiFNAME=$1if[!-f$FNAME];thenecho"$FNAMEisnotafile!"exit2fiecho"文件:${FNAME}"FSIZE=`-b$FNAME|awk'{print$1}'`#gzipGZ_FILE=/tmp/$FNAME_$$.gzcat$FNAME|gzip-c>$GZ_FILEGZ_SIZE=`-b$GZ_FILE|awk'{print$1}'`rm-f$GZ_FILE#bzip2BZ2_FILE=/tmp/$FNAME_$$.bz2cat$FNAME|bzip2-c>$BZ2_FILEBZ2_SIZE=`-b$BZ2_FILE|awk'{print$1}'`rm-f$BZ2_FILE#拉链?这个是什么?#echo-e"bzip2的$FSIZE$BZ2_SIZE"echo-e"gzip的$FSIZE$GZ_SIZE"

⑸ linux shell脚本判断某个文件的大小,符合条件则备份并重命名

cattest.sh#!/bin/shFILE=$1FILE_SIZE=`$FILE|awk'{print$2}'`if[$FILE_SIZE-ge10485760]thencp-p$FILE$FILE-bakfichmod+xtest.sh./test.sh1.txt

逐行解释

查看脚本文件test.sh

定义脚本默认用sh执行

将文件路径赋予FILE变量。$1 表示位回置变量即下面的1.txt

计算答文件大小并赋予FILE_SIZE变量

如果文件大小大于等于10M. 10485760为10M,-ge为大于等于。

if语法关键字

将文件重命名备份

if语法关键字

空行

赋予脚本test.sh可执行权限

执行脚本,输入位置变量1.txt.

⑹ Shell脚本得到文件夹大小

ls -ld 文件夹路径 | awk '{print int($5/1024)}'或者: -b 文件夹路径 | awk '{print int($1/1024)}' 跟你上面计算文件大小类似,得到的都是以KB为单位的大小。如果要以Byte为单位,不要除以1024也不要int取整就是了。 注意:Linux的ext2或ext3文件系统会给目录分配一个inode块(索引节点),用来记录文件信息,所以文件夹的大小不是简单地将其中文件大小累加就能得到的,还包括了这个索引节点的大小。索引节点是一个结构,它包含了一个文件的长度、创建及修改时间、权限、所属关系、磁盘中的位置等信息。

⑺ 如何在 Linux Shell 编程中优雅地获取单个文件大小

通常stat命令可以获取文件的信息,例如

[[email protected]~]#statinstall.logFile:`install.log'Size:26593Blocks:64IOBlock:4096regularfileDevice:803h/2051dInode:11523074Links:1Access:(0644/-rw-r–r–)Uid:(0/root)Gid:(0/root)Access:2014-12-0315:00:53.424917114+0800Modify:2014-12-0315:02:57.999917114+0800Change:2014-12-0315:03:01.367917114+0800

如果只要Size的大小,那么可专以

stat -c%s <文件名>

例如属

[[email protected]~]#stat-c%sinstall.log26593

⑻ linux下如何统计部分文件大小,有很多文件夹,还包含子文件件夹,统计出所有包含‘123’的文件的总大小

|

查看某个文件夹或文件的大小是: -sm filename,

查找某些目录下某些文件文件夹的大小: find . -name "条件" | xargs -sm

你如果想查所有包专含123的文件的大小的话属,使用linux命令可能就很难做到了,使用shell脚本可以实现到,你可以在shell脚本中先查出来所有名字是123的文件,搜索结果中会是全路径形式的,你取文件所在的目录,然后使用上面的方式统计出来包含123文件的所有文件夹的总大小.

例如:

先搜出来所有123的文件:find . -name "123"

/temp/123

/temp/f1/123

/temp/f2/123

获取文件所在的文件夹

/temp

/temp/f1

/temp/f2

然后 ***| xargs -sm

把上面的值加起来

⑼ Linux下如何获取FTP文件名和大小

path='' #这里的$1,换成你需要的路径名,或者你不换,通过shell的参数传入for dirlist in $(find ${path} -name *.xml)doecho ${dirlist} 查找,删除,比较都在这做done

⑽ 我需要在linux的shell下,完成在一个文件第20字节的读取4字节,然后将读取的内容复制到第30字节位置。

我的实验如下:首先,建一个41字节的文件file1,查看一下内容。$ od -tc -Ax file1000000 a b c d e 1 2 3 4 5 a b c d e 1000010 2 3 4 5 a b c d e 1 2 3 4 5 a b000020 c d e 1 2 3 4 5 \n000029由于用于实验的是一个单行文本文件,末尾有一个换行符。 先拷贝前30字节到file2中。$ dd if=./file1 of=./file2 bs=30 count=1记录了1+0 的读入记录了1+0 的写出30字节(30 B)已复制,4.2609e-05 秒,704 kB/秒$ od -tc -Ax file2000000 a b c d e 1 2 3 4 5 a b c d e 1000010 2 3 4 5 a b c d e 1 2 3 4 500001e 然后,读取file1中的21~24共4个字节并附加到file2后面。$ dd if=./file1 of=./file2 conv=notrunc oflag=append ibs=4 skip=5 obs=4 count=1记录了1+0 的读入记录了1+0 的写出4字节(4 B)已复制,6.2934e-05 秒,63.6 kB/秒$ od -tc -Ax file2000000 a b c d e 1 2 3 4 5 a b c d e 1000010 2 3 4 5 a b c d e 1 2 3 4 5 a b000020 c d000022 最后,将file1第30个字节之后的内容全部读取出来并附加到file2后面。$ dd if=./file1 of=./file2 conv=notrunc oflag=append ibs=30 skip=1 obs=30记录了0+1 的读入记录了0+1 的写出11字节(11 B)已复制,6.1464e-05 秒,179 kB/秒$ od -tc -Ax file2000000 a b c d e 1 2 3 4 5 a b c d e 1000010 2 3 4 5 a b c d e 1 2 3 4 5 a b000020 c d a b c d e 1 2 3 4 5 \n00002d 这样就可以了。可以写成一个shell脚本(如下),并在每条dd命令中使用status=noxfer来抑制命令回显,使其静默执行。#!/bin/bashdd if=./file1 of=./file2 status=noxfer bs=30 count=1 >/dev/nulldd if=./file1 of=./file2 status=noxfer conv=notrunc oflag=append ibs=4 skip=5 obs=4 count=1 >/dev/nulldd if=./file1 of=./file2 conv=notrunc oflag=append ibs=30 skip=1 obs=30 >/dev/nullexit 0

未经允许不得转载:山九号 » linux中使用shell获取文件的大小|linux shell 如何比较2个文件最后修改时间的大小

赞 (0)