파일이 디렉터리에 배치되면 파일을 하위 디렉터리로 이동하는 스크립트를 생성하려고 합니다.
예제
파일이 다음 /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
예상한 것과 다른 방식으로 작동하는 이유를 이해하게 될 것입니다. 추가 정보파일 이름 확장.