디렉토리 이름을 호출하고 목록을 매개변수로 반복하는 가장 좋은 방법이 있는지 궁금합니다.
예
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