如何使用shell脚本计算目录中的隐藏文件?

Mol*_*nia 0 bash shell scripting grep

我用过这段代码

#!/bin/bash

ls -l
echo -n "Number of simple files : "
ls -l | egrep '^-' | wc -l 
echo -n "Number of directories : "
ls -l | egrep '^d' | wc -l
echo -n "Number of hidden files : "
ls -la | egrep '^.*\.$' | wc -l
echo -n "Number of hidden directories : "
ls -la | egrep '^d.*\.$' | wc -l
echo " End"
Run Code Online (Sandbox Code Playgroud)

虽然我可以理解前两个egrep是如何工作的,但我无法弄清楚最后两个如何工作.更具体的是什么意思'^.*\.$'?我想要一个以.开头的文件.(隐藏文件)然后我应该如何塑造我的正则表达式?

Cha*_*ffy 7

您根本不应该使用grep(或ls)完成此任务.见http://mywiki.wooledge.org/ParsingLs对于如何进行深入的讨论,ls只能永远被用于交互式显示给人类.

all_files=( * )            # includes directories
directories=( */ )         # directories only
hidden_files=( .* )        # includes directories
hidden_directories=( .*/ ) # directories only

echo "Number of files: $(( ${#all_files[@]} - ${#all_directories[@]} ))"
echo "Number of directories: ${#directories[@]}"
echo "Number of hidden files: $(( ${#hidden_files[@]} - ${#hidden_directories[@]} ))"
echo "Number of hidden directories: $(( ${#hidden_directories[@]} - 2 ))"
Run Code Online (Sandbox Code Playgroud)

- 2上次运算是去除...,这将始终存在.