여러 디렉터리에서 파일을 이동하는 Linux 스크립트

여러 디렉터리에서 파일을 이동하는 Linux 스크립트

파일이 디렉터리에 배치되면 파일을 하위 디렉터리로 이동하는 스크립트를 생성하려고 합니다.
예제
파일이 다음 /home/userA/directory1으로 이동됩니다./home/userA/directory1/directory2

users모든 하위 항목 에 대해 이 작업을 반복해야 하며 해당 항목이 존재하지 않으면 /home사용자를 건너뛰어야 합니다 .directory2

지금까지 내 스크립트

#!/bin/bash

directory="/home/*/directory1"
directory2="/home/*/directory1/directory2/."

if [ $(ls -1A $directory | wc -l) -gt 0 ] ;
then
find $directory -type f -exec rsync --remove-source-files {} $directory2  \; &>/dev/null ;
fi

위 스크립트에서 발생한 문제는 모든 파일을 directory2.

답변1

나는 일부 사용자의 집에 이라는 디렉토리가 있고 d1이 디렉토리 안에 이라는 하위 디렉토리가 있다고 가정합니다 d2.

나는 당신이 비슷한 일을하고 싶어한다고 가정합니다

#!/bin/bash
for i in /home/*/d1 ; do
    if [ -d "$i/d2" ]; then
     # echo  "$i/d2"
     find  "$i" -maxdepth 1 -type f -exec mv {} "$i/d2" \;
    fi
done

메모:

  • 의 실제 이름에 d1공간이 있는 경우 체육관을 더 많이 운영하고 를 사용하여 해당 공간을 보호해야 합니다 \(라고 쓸 수 있음 for i in /home/*/directory\ with\ spaces; do).
  • 이전 스크립트를 작성해 보면 echo $directory2 ; exit예상한 것과 다른 방식으로 작동하는 이유를 이해하게 될 것입니다. 추가 정보파일 이름 확장.

관련 정보