여러 디렉터리를 추가하는 방법

여러 디렉터리를 추가하는 방법

以下のスクリプトは、ディレクトリに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の項目を間に配置する必要がある場合、各do反復doneのディレクトリ名はです$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행 수를 계산합니다.

또한 해당 폴더에 있는 파일의 소유권을 가져오고 싶은지 여부도 고려하지 않았습니다.

関連情報