매개변수 목록 파일에서 디렉터리 이름을 호출합니다.

매개변수 목록 파일에서 디렉터리 이름을 호출합니다.

디렉토리 이름을 호출하고 목록을 매개변수로 반복하는 가장 좋은 방법이 있는지 궁금합니다.

cat /dropbox/script/DirList.txt


DIR_A
DIR_B
DIR_C
DIR_D


/dropbox/dev/inbox/<DIR_A>/ *.*
/dropbox/dev/inbox/<DIR_B>/ *.*
/dropbox/dev/inbox/<DIR_C>/ *.*
/dropbox/dev/inbox/<DIR_D>/ *.*

폴더/디렉토리가 이미 존재하는지 고려하십시오. 언급된 각 디렉토리에 파일이 있으면 보낼 편지함으로 이동하십시오.

mv /dropbox/dev/inbox/<DIR_D>/ *.* to /dropbox/dev/outbox/<DIR_D>/ *.*

나는 노력했다

if [ -d /dropbox/dev/inbox/<DIR_D>/ ]; then
  mv  /dropbox/dev/inbox/<DIR_D>/ *.* to /dropbox/dev/outbox/<DIR_D>/ 
fi

답변1

파일의 줄을 반복하려면 다음과 같이 작동해야 합니다.

while read dir_name; do
    cp -pR /dropbox/dev/inbox/$dir_name/* /dropbox/dev/outbox/$dir_name/
done < /dropbox/script/DirList.txt

mkdir -p /dropbox/dev/outbox/$dir_name보낼 편지함 디렉터리가 아직 없으면 필요할 수 있습니다.

답변2

내가 올바르게 이해했다면 이것이 효과가 있을 것입니다. "*.*"는 이름에 마침표가 있는 파일만 일치합니다(모든 파일과 일치하는 Windows와는 달리).

#!/bin/sh
INBOX=/dropbox/dev/inbox
OUTBOX=/dropbox/dev/outbox
for d in $(cat /dropbox/script/DirList.txt); do
    if [ -d $INBOX/$d ]; then
        mkdir -p $OUTBOX/$d
        mv $INBOX/$d/* $OUTBOX/$d/
    fi
done

관련 정보