当前位置: 首页> 财经> 创投人物 > 中央广播电视总台直播_浙江建设信息网_2022当下社会热点话题_宁波百度seo点击软件

中央广播电视总台直播_浙江建设信息网_2022当下社会热点话题_宁波百度seo点击软件

时间:2025/7/11 3:31:38来源:https://blog.csdn.net/hfcaoguilin/article/details/143652432 浏览次数:0次
中央广播电视总台直播_浙江建设信息网_2022当下社会热点话题_宁波百度seo点击软件
#!/bin/bash#【描述】  目录树文件名映射深度1分组计数,tree(映射(目录A))
#【术语】  
# agg==aggregate==聚合==统计==按照mime-type分组 
# FN==FileName==文件名
#【基本思路】 
# 0. linux gnu tree命令的优点: 目录结构树展示的很友好. 而且 单独做一个同样的展示效果 并不容易
# 1. tree命令的不支持点 
#     不支持对叶子节点(文件)的映射(比如映射文件到扩展名) 
#     不支持对目录节点的映射(比如目录下的扩展名分组统计)  
# 2. 先对目录A做映射(扩展名,扩展名分组统计) 映射的结果还是目录(B)
#     映射(目录A)==目录A
# 3. tree(目录B) == tree(映射(目录A))
# 4. 总结为: 映射(tree(目录A)) == tree(映射(目录A)) : 很像运算符的穿透
# [使用例子] 
#   1.目录树的文件mime-type统计
#   echo 'file --mime-type --brief $FN' >  /tmp/BuszCmd_MapFileNameToX && source /app/bash-simplify/dir_tree_group/tree_MapFN_Depth1Group_Cnt.sh && tree_MapFN_Depth1Group_Cnt /app/LineageOS_ota_xImg_ExtractTool/vendor/oneplus/sdm845-common/proprietary
#   2.目录树的文件扩展名统计
#   echo '  echo "$FN" | egrep ".*\..+" 1>/dev/null 2>/dev/null && echo "${FN##*.}" || echo "EmptyExtend" ' >  /tmp/BuszCmd_MapFileNameToX && source /app/bash-simplify/dir_tree_group/tree_MapFN_Depth1Group_Cnt.sh && tree_MapFN_Depth1Group_Cnt /app/LineageOS_ota_xImg_ExtractTool/vendor/oneplus/sdm845-common/proprietary
#  调试用 增加命令 sqlitebrowser  /tmp/sqlite3db_file.db  set -e -ufunction tree_MapFN_Depth1Group_Cnt(){[[ $# -lt 1 ]] && return 61rootD=$1local flagD="/tmp"local dbFP=$flagD/sqlite3db_file.dblocal rootDId=$(echo "$rootD" | sed 's/\//--/g') # / --> --local cmdF="$flagD/cmdF$rootDId"local aggRootD="$flagD/aggRootD$rootDId"local source_cmd="set -e -u; \n source /app/bash-simplify/dir_tree_group/tree_MapFN_Depth1Group_Cnt.sh"cd $rootD#生成命令文件cat <(echo -e "$source_cmd" ) <(find . -type d | xargs -I@  echo "dire_list_file_mime $dbFP $rootDId $aggRootD $rootD @") | tee "$cmdF" 1>/dev/null#删除先前的统计数据库rm -f $dbFPrm -fr $aggRootDbash   $cmdFtree -I mime_ls.csv $aggRootDecho "SELECT count(*)   sqlite表中文件记录总数 FROM tab_file;" | sqlite3  --line "$dbFP"  }function sqlite3_create_tab_import_fileNameLs() {[[ $# -lt 4 ]] && return 63local dbFP=$1local mimeLsCsvFP=$2local parentD=$3local dirName=$4which sqlite3 1>/dev/null || sudo apt install -y sqlite3 sqlitebrowser #建立表结构sqlite3  "$dbFP"  < <(echo -e """
CREATE TABLE IF NOT EXISTS tab_file (outParentD varchar(512) , parentD varchar(512),  dire varchar(128),  fileName varchar(128), mimeType varchar(64));
.exit
""")sqlite3   "$dbFP" <<EOF
.mode csv
.separator ;
.headers off  
.import $mimeLsCsvFP tab_file-- SELECT count(*) FROM tab_file;.exit
EOF}function dire_list_file_mime() {[[ $# -lt 5 ]] && return 62local dbFP=$1local rootDId=$2local aggRootD=$3local rootD=$4local dire=$5local agg_dire="$aggRootD/$dire"mkdir -p $agg_direlocal parentD=$(dirname $dire)local dirName=$(basename $dire)local outParentD=$aggRootD/$parentDlocal mimeLsCsvFP="$outParentD/mime_ls.csv"local mimeAggOutFP="$outParentD/mime_agg.txt"local directFileCnt=\
$(  cd $rootD && cd $dire && find . -maxdepth 1 -type f |wc -l ;)#............标记相同命令..............................
[[ $directFileCnt -eq 0 ]] && return 0 #若目录dire 无直接文件 则不处理
(   cd $rootD && cd $dire && find . -maxdepth 1 -type f | while read -r _FN ; do  ( FN="${_FN/.\//}" && mimeTyp=$(FN="$FN" bash /tmp/BuszCmd_MapFileNameToX) && echo  "$outParentD;$parentD;$dire;$FN;$mimeTyp"  ;) ; done | tee "$mimeLsCsvFP" 1>/dev/null;)#举例1: /tmp/BuszCmd_MapFileNameToX == 'file --mime-type --brief $FN'   #文件mimeType#举例2: /tmp/BuszCmd_MapFileNameToX == '  echo "$FN" | egrep ".*\..+" 1>/dev/null 2>/dev/null && echo "${FN##*.}" || echo "EmptyExtend" '      #文件的扩展名
# 'while read' 替换xargs举例: seq 1 4 |  while read -r k; do ( echo $k ;) ; donesqlite3_create_tab_import_fileNameLs $dbFP $mimeLsCsvFP $parentD $dirNamelocal sql="select mimeType,count(*) from tab_file where parentD='$parentD' and dire='$dire' group by mimeType ;"local mimeTyp_Cnt__Ls="$(sqlite3   "$dbFP"  < <( echo "$sql" )  )"mimeTyp_Cnt__Ls="$(echo "$mimeTyp_Cnt__Ls" | sed 's/\//--/g')" # / --> --mimeTyp_Cnt__Ls="$(echo "$mimeTyp_Cnt__Ls" | sed 's/|/=/g')" # / --> =echo "$mimeTyp_Cnt__Ls" | while read -r mimeTyp_Cnt ; do  ( touch "$agg_dire/${mimeTyp_Cnt}" ;) ; done
}
关键字:中央广播电视总台直播_浙江建设信息网_2022当下社会热点话题_宁波百度seo点击软件

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: