1

使用 Mac OS X 10.8.5。认为在命令行上执行此操作最有意义,但欢迎提出其他建议。

我有一个包含各种备份的目录。这里大约有 45 个备份,每个备份都是定期运行的增量阶段。每个备份目录的目录结构是相同的,但它们各自的顶级/父目录具有不同的名称(时间戳)。例子:

2013_9_12_0500/Files/MoreFiles/SomethingElse/Folder/subfolder/morefolders
2013_9_12_0600/Files/MoreFiles/SomethingElse/Folder/subfolder/morefolders
2013_9_12_0700/Files/MoreFiles/SomethingElse/Folder/subfolder/morefolders
2013_9_12_0800/Files/MoreFiles/SomethingElse/Folder/subfolder/morefolders
2013_9_12_0900/Files/MoreFiles/SomethingElse/Folder/subfolder/morefolders
2013_9_12day/Files/MoreFiles/SomethingElse/Folder/subfolder/morefolders
2013_9_13day/Files/MoreFiles/SomethingElse/Folder/subfolder/morefolders
2013_9_14day/Files/MoreFiles/SomethingElse/Folder/subfolder/morefolders
2013_9_10week/Files/MoreFiles/SomethingElse/Folder/subfolder/morefolders

等等

“子文件夹”目录本身包含许多子目录。我想计算每个“子文件夹”目录中有多少子目录。例子:

2013_9_12_0500/Files/MoreFiles/SomethingElse/Folder/subfolder/  =>  884 subdirs
2013_9_12_0600/Files/MoreFiles/SomethingElse/Folder/subfolder/  =>  1423 subdirs
2013_9_12_0700/Files/MoreFiles/SomethingElse/Folder/subfolder/  =>  540 subdirs
2013_9_12_0800/Files/MoreFiles/SomethingElse/Folder/subfolder/  =>  378 subdirs

ETC...

我对这个命令有一些运气:

 find ./*/*/*/*/*/subfolder -type d | wc -l

问题是它只显示了所有“子文件夹”的总数,而不是每个子文件夹中的计数。例如“13543”而不是上面列出的。

是的,我可以一次手动完成一个,但是学习新东西是不是很兴奋?:)

谢谢, C

4

2 回答 2

1

你为什么不做

for d in ./*/*/*/*/*/subfolder; do
    printf "%s\t" "$d"
    find "$d" -type d -printf "%i\n" | wc -l
done

该命令的-printf选项find是一种安全措施,以防您的目录名称带有换行符或其他任何内容。

于 2013-10-15T20:16:57.737 回答
1

下面的很多恶作剧都是处理文件夹名称中的空格,但我认为这个函数会生成你的输出......

用法:countsubdirs PUT/PATH/HERE

countsubdirs(){
    ORIGIFS=$IFS
    IFS=$(echo -en "\n\b")
    DIRS=$(find "$1" -maxdepth 1 -mindepth 1 -type d )
    for D in $DIRS; do echo $D "=>" $(find $D -maxdepth 1 -mindepth 1 -type d | wc -l) subdirs; done
    IFS=$ORIGIFS
}

输出:

temp/hello =>        1 subdirs
temp/ntest 4 =>        0 subdirs
temp/temp =>        0 subdirs
temp/test =>        2 subdirs
temp/test 4 =>        0 subdirs
temp/test3 =>        1 subdirs
temp/tester =>        0 subdirs
temp/xl =>        1 subdirs
于 2013-10-15T18:27:21.753 回答