Unix脚本,找到当前目录

时间:2014-04-09 08:49:36

标签: bash unix find

#!/bin/sh

Dir1=$1
Dir2=$2


if [ $# -lt 1 ]
then
    echo  "`find -type f | wc -l` ordinary `find -type f -executable | wc -l` executable     `find -type l | wc -l` links `find -type d | wc -l` directories"
else
    if [ $# -eq 1 ]
    then
        echo "$Dir1: `find $Dir1 -type f | wc -l` ordinary `find $Dir1 -type f -executable | wc     -l` executable `find $Dir1 -type l | wc -l` links `find $Dir1 -type d | wc -l` directories"
    else
    fi
fi

对于这段代码,我想要做的是,如果我有一个名为find.sh的脚本,当我输入find.sh而没有任何目录时,它只会找到当前目录中的文件,如果是例如,find.sh测试目录,它会找到测试目录中的所有文件,问题是我不确定代码的第一部分是否正确,不确定它是否找到当前目录。

2 个答案:

答案 0 :(得分:0)

你似乎没有在那里使用Dir2。

我愿意

if [ -z $1 ]
then
   Dir1=$(/bin/pwd)
else
   Dir1=$1
fi

用于变量检测。那么你只需要:

number=$(find $Dir1 -type f |wc -l)
echo "$Dir1 has $number files" 

和您的可执行文件相同的工作。

答案 1 :(得分:0)

这是修复

#!/usr/bin/env bash

dir1=${1:-.}
dir2=${2:-.}
echo $dir1 $dir2

for dir in $dir1 $dir2
do
  ordinary=$(find $dir -type f | wc -l )
  executable=$(find $dir -type f -executable | wc -l)
  directories=$(find $dir -type d | wc -l)
  links=$(find $dir -type l | wc -l)
  echo "$dir: $ordinary $executable $links $directories"
done

解释

  • dir1=${1:-.}如果$ 1存在,则将$ 1分配给dir1,否则,给出默认值..表示当前目录。