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是如何工作的,但我无法弄清楚最后两个如何工作.更具体的是什么意思'^.*\.$'?我想要一个以.开头的文件.(隐藏文件)然后我应该如何塑造我的正则表达式?
您根本不应该使用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上次运算是去除.和..,这将始终存在.