如何添加多个目录

如何添加多个目录

下面的脚本用于检查和更改单个目录的所有者(如果该目录包含超过 4 个文件),我们如何添加多个目录,以便它检查所有目录以及任何目录中包含超过 4 个文件它可以改变所有者

#!/bin/bash
FILE=""
DIR="/home/ec2-user/test1"
dir_files=("$DIR"/*)
if [[ "${#dir_files[@]}" -gt 4 ]] ; then
#More than 4 files change owner satha
    chown satha $DIR
elif [[ -e "${dir_files[0]}" ]] ; then
#change owner if DIR is below 4 files
    chown lohith $DIR
else
#change owner if DIR is empty
 chown lohith $DIR
fi

答案1

#!/bin/zsh -
dirs=( $^argv(N-/) ) # those of the arguments that can  be determined to
                     # be directories after symlink resolution

for dir ($dirs) {
  files=( $dir/*(NDY5) ) # files in $dir, stopping at the 5th
  case $#files {
    (5) chown -- satha $dir;; # for > 4 files
    (0) chown -- lohith $dir;; # for no file
    (*) chown -- lohith $dir;; # anything else (1 to 4)
  }
}

答案2

您可以创建一个 for 循环,以迭代要存储在变量中的目录

我的结构如下:

:~/test1$ find . | sort
.
./dir1
./dir1/dir1-a
./dir1/dir1-a/file1a-a
./dir1/dir1-a/file1a-b
./dir1/dir1-a/file1a-c
./dir1/dir1-a/file1a-d
./dir1/dir1-b
./dir1/dir1-b/file1b-a
./dir1/dir1-b/file1b-b
./dir1/dir1-b/file1b-c
./dir1/dir1-c
./dir1/dir1-c/file1c-a
./dir1/dir1-c/file1c-b
./dir1/dir1-d
./dir1/dir1-d/file1d-a
./dir1/file1-a
./dir1/file1-b
./dir2
./dir2/dir2-a
./dir2/dir2-b
./dir2/dir2-c
./test.sh

注意 dir1 包含文件和文件夹。您还没有说明要对子文件夹执行什么操作,或者是否存在子文件夹。

#!/bin/bash

DIR=( "/home/aubs/test1/dir1" "/home/aubs/test1/dir2" )

for Item in "${DIR[@]"}
do
    echo "Scanning $Item"
    COUNT_FILES=$(find "$Item" -maxdepth 1 -type f | wc -l)
    echo "contains $COUNT_FILES files"
done

如果 DIR 中的项目应该放在 和 之间dodone则每次迭代的目录名称都是$Item

$ ./test.sh
Scanning /home/aubs/test1/dir1
contains 2 files
Scanning /home/aubs/test1/dir2
contains 0 files

在我的测试中使用${#dir_files[@]}给出 6 和 3,这显然也考虑了目录。我的示例使用find "$Item" -maxdepth 1 -type f它仅计算目录中的文件数量,而不查看子目录。然后它通过管道将其传送到wc -l计算有多少行。

您也没有考虑是否想要获得该文件夹中文件的所有权。

相关内容