パラメータリストファイルからディレクトリ名を呼び出します。

パラメータリストファイルからディレクトリ名を呼び出します。

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

はい

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

関連情報