use*_*965 6 command-line scripts
来源:具有任意数量和类型的文件的任何目录树。问:每个子目录中有多少个.jpg
or.jpg
和.png
(例如)?
如何限制具有 1 个或多个特定扩展名的文件的以下代码?-type f -name "*.jpg*"
例如,插入时遇到问题。
for DIR in $(find . -maxdepth 99 -type d)
do
printf "%10d\t%s\n" $(find ${DIR}|wc -l) "${DIR}"
done
Run Code Online (Sandbox Code Playgroud)
期望的输出:
118 ./aaa
73 ./aaa/bbb
16 ./aaa/bbb/ccc
Run Code Online (Sandbox Code Playgroud)
如果统计了不止一种文件类型,则应显示每个子目录中它们的总数量。
大概是这个find
| xargs
解决方案将根据您的需要工作。
find . -mindepth 1 -maxdepth 99 -type d -print0 | \
xargs -0 -i bash -c 'printf "%10d\t%s\n" "$(find "$1" -maxdepth 1 -type f -regextype awk -iregex ".*\.(jpg|jpeg|png)" | wc -l)" "$1"' - '{}'
Run Code Online (Sandbox Code Playgroud)
一些解释:
-mindepth 1
选项是为了跳过当前目录并仅处理子目录。-print0
输出条目提供空分隔符,它与 选项一起-0
使用xargs
。- "{}"
末尾的选项将传递参数作为bash 命令的xargs
第一个位置参数的值。$1
find
命令中-iregex
表示不区分大小写的正则表达式(您可以使用-regex
)。 归档时间: |
|
查看次数: |
2454 次 |
最近记录: |