linux所有子目录,Linux 学习-Shell 遍历目录和子目录所有文件

题目如下:

写一个脚本程序,它带一个参数,若该参数是一个普通文件,则把该文件的索引结点号、大小以及最近一次修改时间等详细信息输出来;如果该参数是一个目录,则将该目录(包含子目录)下的所有普通文件的文件名以及上述文件信息输出来。

要求:

(1)如果参数个数大于1,或者参数既不是普通文件也不是目录文件,则提示出错

(2)给出程序在两种不同类型参数(普通文件/目录)下的运行结果

#! /bin/bash

findFile(){

file="$1"

for element in `ls $1`

do

dir_or_file=$file"/"$element

if [ -d $dir_or_file ]

then

findFile $dir_or_file

else

if [ -f $dir_or_file ]

then

set $(ls -il $dir_or_file)

inode=$1

size=$6

time=$7"-"$8"-"$9

echo "Name Inode Time Size"

echo "$dir_or_file $inode $time $size"

fi

fi

done

}

filename="$1"

if [ "$#" -gt 1 ]

then

echo "input error. only one argument!!"

elif [ -f "$filename" ]

then

echo "查询输入参数确认是文件,信息如下"

set $(ls -il $filename)

inode=$1

size=$6

time=$7"-"$8"-"$9

echo "Name Inode Time Size"

echo "$filename $inode $time $size"

elif [ -d "$filename" ]

then

echo "查询查询输入确认是目录,此目录下所有文件(包含子目录)信息如下:"

findFile $filename

else

echo "输入参数既不是普通文件也不是目录文件!!"

fi

脚本运行结果如下:

1)当输入参数大于1

f06f954798fc

1.png

2)当输入参数为目录

f06f954798fc

2.png

3)当输入参数为文件

f06f954798fc

3.png

4)当输入参数不存在对应目录和文件

f06f954798fc

4.png

扩展

以下命令均不包含".",".."目录,以及"."开头的隐藏文件,如需包含,ll 需要加上 -a参数

当前目录下文件个数,不包含子目录

ll |grep "^-"|wc -l

当前目录下目录个数,不包含子目录

ll |grep "^d"|wc -l

当前目录下文件个数,包含子目录

ll -R|grep "^-"|wc -l

当前目录下目录个数,包含子目录

ll -R|grep "^d"|wc -l

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值