我目前有一个脚本(连接到GUI),它转到指定的文件夹,获取文件,放在别处。工作得很好。
# set up log in info.
HOST=$1
USER=$2
PASS=$3
#local file info
FROMDIR=$4
FROMFILE=$5
#remote file info
TODIR=$6
TOFILE=$7
#sent dir
SENTDIR=$FROMDIR/../sent
#log dir
DIRNAME=`/usr/bin/dirname $0`
LOGDIR=$DIRNAME/../log
LOGFILE=$LOGDIR/$5.log
#####################################################
#
# move the file to the pickup folder
#
#####################################################
if ! test -d $LOGDIR
then
/usr/bin/mkdir $LOGDIR
fi
if `/usr/bin/cp "$FROMDIR/$FROMFILE" "$TODIR/$TOFILE"`
then
echo `date` >> $LOGFILE
echo "Successfully copied file from $FROMDIR/$FROMFILE to $TODIR/$TOFILE" >> $LOGFILE
exit 10;
else
echo `date` >> $LOGFILE.failed
echo "Colud not copy file from $FROMDIR/$FROMFILE to $TODIR/$TOFILE" >> $LOGFILE.failed
exit 1;
fi
但是,我现在想要更改它以浏览子目录列表并将文件放到一个位置。
注意: 对于以下内容,请将其用作参考:
/foo/sing/song
/tommy
/chicken
/in
/out
/burger
/in
/out
etc...
/ tommy下的子目录将不断增长。我需要进入每个文件夹" / in"并将文件带到/ foo / sing / song(我的脚本应该可以正常工作)。
我感谢您提供的任何帮助;我是shell脚本的新手,所以这个字段中的通配符和循环仍然比我高一点。
谢谢!
答案 0 :(得分:1)
你可以用一行代码来做到这一点:
cp -r /foo/sing/song/tommy/*/in/* /foo/sing/song
*
之类的通配符非常易于理解:它意味着任何。 -r
是可选的,如果您的in
文件夹中只有其他目录,则需要{。}}。