繁体   English   中英

更改Shell脚本以查看目录的动态列表

[英]Alter shell script to look through a dynamic list of directories

我目前有一个脚本(连接到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脚本非常陌生,因此该字段中的通配符和循环仍然比我高一些。

谢谢!

您可以单线执行此操作:

cp -r /foo/sing/song/tommy/*/in/* /foo/sing/song

*这样的通配符非常容易理解:它意味着任何东西 -r是可选的,如果in文件夹中只有其他目录,则需要-r

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM