用于检查目录是否包含4个以上文件的Shell脚本

ccgok5k5  于 2022-12-19  发布在  Shell
关注(0)|答案(2)|浏览(148)

我需要一个 shell 脚本,检查是否包含超过4个文件的目录,并改变目录所有者。
下面的脚本只检查目录是否为空,如果目录为空,则将目录所有者更改为lohith,如果目录不为空,则将所有者更改为satha。
下面是需要添加到脚本中的内容,以检查目录是否包含超过4个文件,是否需要将所有者更改为satha,如果目录包含少于4个文件或目录为空,是否需要将所有者更改为lohith。

#!/bin/bash
FILE=""
DIR="/home/ec2-user/test1"
# init
# look for empty dir 
if [ "$(ls -A $DIR)" ]; then
     chown satha $DIR
else
     chown lohith $DIR
fi
e3bfsja2

e3bfsja21#

通常不希望parse the output of the ls command in a script。非ls示例可能如下所示:

#!/bin/bash
dir_files=("$DIR"/*)
if [[ "${#dir_files[@]}" -gt 4 ]] ; then
 #More than 4 files
elif [[ -e "${dir_files[0]}" ]] ; then
 #non-empty
else
 #empty
fi

这会将文件列表放入数组中,然后按顺序检查:如果数组有4个以上的元素(即4个以上的文件),则通过确认数组的第一个元素存在(这证明glob匹配 something)来检查目录是否为非空,然后福尔斯目录为空的最后一种情况。

4zcjmb1e

4zcjmb1e2#

下面是一个使用ls的例子。wc -l <filename>将返回文件中的行数,所以如果我们将ls的输出通过管道传输到wc,我们就可以得到文件中的行数。由于$(pwd)得到当前的工作目录,所以可以用任何其他目录替换它。

#!/bin/bash

DIR=$(pwd)

count=$(ls -a $DIR | wc -l)
if (( $count > 4 )); then
     echo "more than four"
else
     echo "less than four"
fi

相关问题