ディレクトリ名を呼び出してリストをパラメータとして繰り返す最善の方法があるかどうか疑問に思います。
はい
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