bash - 如何使用 bash 显示有两个子文件夹的文件夹?

标签 bash shell awk

我通过 Cygwin 使用 bash。我有一个大文件夹 (a),有很多子文件夹 (b)。这些子文件夹各有一个或两个子文件夹 (c)。我想找到所有有两个子文件夹 (c) 的子文件夹 (b) 并输出它们。

结构如下:

a
 b1
  c1 
 b2
  c1
  c2
 b3
  c1
  c2

到目前为止,我只知道如何使用 find 和管道输出主文件夹 (a) 中的所有子文件夹。

find . -type d > folders.txt

如何只将所有包含两个 c 文件夹的 b 文件夹输出到一个文本文件,每行一个文件夹? (在我的例子中,输出应该是:

b2
b3

最佳答案

尝试使用 执行此操作:

cd a
find . -type d |
awk -F/ '{arr[$2]++}END{for (a in arr) {if (arr[a] == 3) print a}}'

或使用 :

cd a
for i in */; do x=( $i/*/ ); (( ${#x[@]} == 2 )) && echo "${i%/}"; done

关于bash - 如何使用 bash 显示有两个子文件夹的文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14912513/

相关文章:

shell - 如何过滤掉./gradlew project:dependencies命令的特定部分?

bash - 将终端中同一位置的不同短语大写

bash for 循环与 grave 命令

bash - 你如何将 ls 的输出发送到 mv?

bash - 如何模拟cron执行脚本的环境?

linux - Centos 6.6 shell 脚本 - 意外 token 附近出现语法错误

java - 如何用java一步步执行linux shell

ruby-on-rails - Rails 4.1 环境变量不重新加载

bash - 在 awk 中使用 shell 变量

linux - Bash Shell 脚本 - 剪切