【问题标题】:If directory meets a condition, then do wc in each [closed]如果目录满足条件,则在每个 [关闭] 中执行 wc
【发布时间】:2013-10-19 13:20:49
【问题描述】:

我必须编写一个脚本,如果满足条件(例如:文件夹以“A”开头)然后递归地打开每个满足条件的目录并在里面的文件上执行wc。如果目录中的文件超过 50 个,则使用 wc 回显目录名称。

【问题讨论】:

  • 请向我们展示您已经尝试过的内容。
  • 这是一个相当简单的任务,如果你尝试就可以做到,当你卡在某个地方时,请提出你的疑问。
  • 条件='ls | grep A' if [ $CONDITION ];then for FILE in $CONDITION do ls -l | wc -l echo "$FILE" done fi

标签: bash shell loops if-statement


【解决方案1】:

您似乎想查找所有以 A 开头且包含超过 50 个文件的目录。

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

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

【讨论】:

    【解决方案2】:

    这个脚本应该适合你:

    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")
    

    【讨论】:

      猜你喜欢
      • 2018-12-21
      • 2013-08-08
      • 2012-01-24
      • 1970-01-01
      • 1970-01-01
      • 2023-01-12
      • 2021-01-28
      • 1970-01-01
      • 2020-07-09
      相关资源
      最近更新 更多