shell--文件操作1

本文介绍了如何使用Shell脚本进行文件操作,包括遍历目录统计文件行数、读取文件内容、更改文件后缀名以及判断文件是否存在。重点讲解了wc、cut、mv以及date命令的使用方法。
摘要由CSDN通过智能技术生成


1.遍历目录,查找其中所有文件,并统计每个文件的行数

定义一个函数detect,这是为了可以递归往子目录中操作

接着一个循环遍历`ls $1`的结果,$1是第一个输入参数,也即查找路径

在循环中,首先判断文件是否是目录文件,如果是,则递归进入里边,

否则用wc命令得到文件中行的数目,并用cut命令得到wc结果中的行数,最后把结果保存到/home/user/shell/reslt.txt里边就好啦。

最后调用下这个函数。

#!/bin/sh
function detect(){
for file in `ls $1`
do
if [ -d $1"/"$file ]
then
  detect $1"/"$file
else
  wc -L $1"/"$file | cut -d' ' -f 1-2>> /home/user/shell/result.txt
fi

done
}
path="/home/user/"
detect $path


wc命令

wc即wordcount,可以统计文件的相关信息。

  • -l选项统计行数
  • -c统计字节数
  • -w统计字数,字由空格,换行等区分
  • -L,最长行的长度(字符个数,比如aaa长度为3)

因为它的输出是“num  文件名”的形式,比如
root@ubuntu:/home/user/shell# wc -l t.sh
15 t.sh

所以要得到15的话就要使用cut命令了

ls -l | wc -l 可以用来统计当前路径下文件总数

cut命令

  • -b以字节为单位分割,注意的是wc里边是没有-b选项的哦
  • -c以字符为单位分割,感觉和-b差不多啊,每一个字符都是用一个字节来存储的,像'\t'这样的也是嘛
  • -d自定义分隔符,可以用空格,或者字符之类的
  • -f与-d合作,指定显示分割区域的哪一部分,分割部分的序号从1开始
a x dd
bb x zz
ccc x dd
root@ubuntu:/home/user/shell# cut -d'x' -f2 ls
 dd
 zz
 dd
root@ubuntu:/home/user/shell# cut -d'x' -f1,2 ls
a x dd
bb x zz
ccc x dd
root@ubuntu:/home/user/shell# cut -d' ' -f1-3 ls
a x dd
bb x zz
ccc x dd

-d后边紧跟' ',单引号里边填充自定义分隔符,上面实验了字符x和空格, -f后则跟数字,表示输出的区域

从里面可以发现,如果输出的区域是连续的两个区域,那么分割它们的分隔符在输出的时候也是会输出的哦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值