Bash脚本分析目录和打印目录摘要

时间:2013-06-06 04:40:37

标签: bash unix

我正在编写一个脚本,它将分析unix中的任何目录并显示输出: script.sh dir1 dir2 ... dirn

需要的输出: 目录xxx包含yy文件和zz目录

#!/bin/bash
echo 'Enter Dir names'
read dirs
for input_source in $dirs; do 
ls -ld|wc -l; 
echo
# here goes a problem I am trying to figure out how to get this value printed by echo
# together with dirs and files quantity

请告知。

我无法弄清楚如何继续使用代码。请指教

2 个答案:

答案 0 :(得分:3)

注意:编辑以处理文件/目录名称中的新行。

最好不要解析ls命令的输出。

计算文件(没有dirs):

find "$DIR" -maxdepth 1 -type f -exec echo -n . \; | wc -c

计算dirs:

find "$DIR" -maxdepth 1 -type d -exec echo -n . \; | wc -c

完整的脚本:

#!/bin/bash
echo 'Enter Dir names'
read dirs
for DIR in "$dirs"; do 
    numFiles=$(find "$DIR" -maxdepth 1 -type f -exec echo -n . \; | wc -c)
    numDirs=$(find "$DIR" -maxdepth 1 -type d -exec echo -n . \; | wc -c)
    echo "Directory $DIR contains $numFiles files and $numDirs directories"
done

答案 1 :(得分:1)

代码中的

使用以下内容:@where ls -ld写入

获取目录

  ls -latr | sed -n '/^d/p' zdirlst | grep -v "\." 

获取文件:

  ls -latr | sed -n '/^-/p' zdirlst | grep -v "\."

添加wc -l以获取计数并按照reqd显示...

希望这会有所帮助!!