如果目录满足条件,则在每个目录中执行wc

时间:2013-10-19 13:20:50

标签: bash shell loops if-statement

我必须编写一个脚本,如果满足条件,(例如:文件夹以'A'开头)然后以递归方式打开满足条件的每个目录,并对内部文件执行wc。如果目录中有超过50个文件,请使用wc回显目录名称。

2 个答案:

答案 0 :(得分:1)

看起来你想要找到所有以A开头的目录,其中包含超过50个文件。

以下命令列出满足字符串名称条件的所有目录(如果其中包含50个以上的文件)

NAME="A*"
find . -type d -name "$NAME" -exec sh -c 'echo $(ls "{}" |wc -l) "{}"' \; | awk 'int($1)>=50'

答案 1 :(得分:0)

此脚本应该适合您:

PREFIX="A"

while read dir; do
   numDir=$(d=( $dir*/ .$dir/*/ ) && echo "${#d[@]}")
   numFileDir=$(a=( $dir/* $dir/.* ) && echo "${#a[@]}")
   [[ ((numFileDir-numDir > 50)) ]] && echo "$dir: " $((numFileDir-numDir))
done < <(find . -type d -name "$PREFIX")