1

我正在编写一个脚本,它将分析 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

请指教。

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

4

2 回答 2

3

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

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

要计算文件(无目录):

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

要计算目录:

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
于 2013-06-06T04:51:14.660 回答
1

在您的代码中使用以下内容:@where ls -ld iswritten

获取目录

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

获取文件:

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

添加 wc -l 以获取计数并根据 reqd 显示...

希望这可以帮助 !!

于 2013-06-06T04:48:50.063 回答