使用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
等
'子文件夹'目录包含许多子目录本身。我想计算EACH'子文件夹中有多少个子目录。目录。例如:
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
等...
我对这个命令运气不错:
find ./*/*/*/*/*/subfolder -type d | wc -l
问题是它只显示了ALL'子文件夹的整体总数。而不是每个子文件夹中的计数。例如。 " 13543"而不是上面列出的。
是的,我可以一次一个地手动完成,但是在学习新东西时是否兴奋? :)
谢谢, ç
答案 0 :(得分: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
答案 1 :(得分:1)
你为什么不这样做
for d in ./*/*/*/*/*/subfolder; do
printf "%s\t" "$d"
find "$d" -type d -printf "%i\n" | wc -l
done
-printf
命令的find
选项是一个安全措施,以防您有新行或其他目录名称。