Answers:
首先,您将find
在终端中使用该命令。
find . -type f -name "*.what"
这将列出当前目录“。”中系统上的所有文件。匹配“type:file”并命名为“* .what”。
所以你可以将它合并到一个bash脚本中,如下所示:
编辑
你走了,这就是你想要的。
#!/bin/bash
src=${1:-"."}
ext=${2:-"what"}
for dir in `find ${src} -type f -name "*.${ext}"`; do
dir=`echo ${dir} | awk 'BEGIN{FS=OFS="/"}{$NF=""}{print}'`
echo ${dir} "has" `ls -l ${dir} | awk '!NR=1 && !/^d/ && !/*.what/ {print $NF}' | wc -l` "file(s)"
done
这将输出包含* .what(递归)的任何目录中的文件数。if文件的数字不包括目录!/^d/
和* .what文件!/*.what/
。
那会让你到那儿。至少在我的系统上工作,假设我理解了这个问题。
$ cat tmp / example.awk { 一个[$ 1] ++ } 结束 { for(i in a){ DIR = I; gsub(“”,“\\”,dir); printf“echo%s:%d; cd%s; ls -1 * htm; cd - > / dev / null; echo \ n”, 我,[i],dir,dir } }
样本输出:
find . -iname "*.htm" -printf "%h\t%f\n" |sort |\
awk -F'\t' -f tmp/example.awk |sh
(......) ./fpsu/applikasjon/kjerne/lib:1 XOM-1.0b5.htm ./tmp/refcp/refcp/home/jaroslav/reference/programing/input-processing:1 善用+个人+ names.htm ./Downloads/index文件:3 allclasses-frame.htm 概述 - frame.htm 概述 - summary.htm ./tmp/refcp/refcp/home/jaroslav/reference/code/html-css/common-web-fonts_files:6 hostedbadge_002.htm hostedbadge_003.htm hostedbadge.htm like_002.htm like_003.htm like.htm (......)
第一步是使用给定的扩展名打印每个文件夹和文件名。这是使用%h%t参数来查找printf。
下一步是在awk程序中使用[$ 1] ++计算给定文件夹中的每个条目。也就是说,对于打印的每一行,我们递增一个数组条目,其索引等于找到的包含具有给定后缀的文件的目录的名称。
当所有条目都被计数后,我们回显一个简单的shell命令来打印结果并列出我们找到的每个目录中的文件。
结果是我们输入的shell命令列表sh
。
find -name *.c|grep -c .c
这将找到扩展名为.c的项目数
find -name *.c
将列出扩展名为.c的项目的目录结构
!/bin/bash
find -name *$1|grep -c $1
find -name *$1
将其保存为/ home / yourname / bin中的list.sh
Chmod +x list.sh
chown {username} list.sh
通过列表* .extension在任何地方调用它
例 list *.c
*.c
。
#!/bin/bash find -name *$1|grep -c $1 find -name *$1