⑴ 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个文件最后修改时间的大小