我正在编写一个脚本,它将分析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
请告知。
我无法弄清楚如何继续使用代码。请指教
答案 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显示...
希望这会有所帮助!!