编写一个shell脚本,罗列当前路径下所有以f开头的文件名(注意:不包括文件夹)?

编写一个shell脚本,罗列当前路径下所有以f开头的文件名(注意:不包括文件夹)?,第1张

你好,

情况一: 只列出当前文件下的以f开头的文件,不考虑子文件夹:

----------------------

#!/bin/sh
print_f(){
for i in `ls`;do
if [[ -f $i && $i =~ ^f ]];then
echo $i
fi
done
}
print_f

上面的格式没有了,对着改下格式吧:

----------------------

运行结果:

情况二: 列出当前文件夹及子文件夹下以f开头的文件:

----------------------

#!/bin/sh
print_f(){
for i in `ls $1`;do
p=$1"/"$i
name=`basename $p`
if [[ -f $p && $name =~ ^f$ ]];then
echo $i
fi
if [ -d $p ];then
p=$1"/"$i
print_f $p
fi
done
}
print_f `pwd`

----------------------

上面的格式没有了,对着改下格式吧:

运行结果:

情况三:将"情况二"中的echo $i改为echo $p,即可得到当前文件夹及子文件夹中以f开头文件的绝对路径

情况四:只输出当前文件夹中以f开头文件的绝对路径:

---------------

#!/bin/sh
print_f(){
for i in `ls`;do
if [[ -f $i && $i =~ ^f ]];then
echo $1'/'$i
fi
done
}
print_f `pwd`

---------------

上面代码格式没了,对着自己改下格式吧:

运行结果:

有如下几种方法:
1)一行行地echo重定向
2)echo -e + 多行,重定向
3)用Here Document方式(具体参见:>

这不一行命令就搞定了吗:

ls -lS | awk '{print " " }'

你可以将它保存为一个 shell 脚本。

命令运行截图

ls -lS 的作用是查看文件信息,并以文件大小降序。

awk '{print $9 " " $5}' 的作用是从这些信息中过滤出文件名和文件大小,以空格隔开。

cd
xx
for
name
in
c;do
mv
$name
/work/${name%c}app
#仅对xx目录的c文件有效,希赛里有很多脚本编程知识的。我都是去那里看的。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/13402219.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-29
下一篇 2023-07-29

发表评论

登录后才能评论

评论列表(0条)

保存