[英]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.