2016-02-13 27 views
0

我目前有一个脚本(连接到GUI),它会转到指定的文件夹,获取文件并将它放在其他位置。工作得很好。修改shell脚本以查看目录的动态列表

# 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... 

的下/撬子目录会不断增长。我需要进入每个文件夹的“/ in”,并将这些文件转到/ foo/sing/song(这对我的脚本仍然可以正常工作)。

我很感激您可以提供的任何帮助;我对shell脚本相当陌生,所以这个字段中的通配符和循环仍然高于我。

谢谢!

+1

据我所知,前3个参数是无用的(不在脚本中使用)对吗? (主机,用户和通行证) – fanton

+0

他们有时使用...但在这种情况下,没有。但是,这给出了在GUI中输入FTP信息的选项,以便我可以登录到FTP文件夹并删除文件。 – FrankCapone

+0

尽管如此,脚本并未使用这些参数。 – fanton

回答

1

你可以做,在一个班轮:

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

通配符像*是很容易理解的:它意味着什么-r是可选的,只有在in文件夹中有其他目录时才需要。