ls *CNC* -mQ的工作原理是只显示带有CNC的文件,但是ls *CNC* $DCS_COMMSDIR/inreject -mQ会显示所有来自inreject文件夹的文件-为什么?
在我的脚本中(或者更确切地说,是我不久前离开的同事,我对它做了一点修改),我需要在电子邮件中列出所有将为特定部门/用户组删除的文件,但命令ls CNC $DCS_COMMSDIR/inreject -mQ显示所有文件(删除工作正常)。
命令find $DCS_COMMSDIR/inreject -type f -name "CNC*“运行良好,但显示文件路径,我不想将其发送给用户
脚本如下所示
#starting script
echo "Start..."
rval=0
inValueST=`find $DCS_COMMSDIR/inreject -type f -name "*CNC*" | wc -l`
totValue=$(($inValueST))
#inValueTEST=`ls *CNC* $DCS_COMMSDIR/inreject -mQ`
#inValueTEST=`ls $DCS_COMMSDIR/inreject -mQ`
#inValueTEST=`find $DCS_COMMSDIR/inreject -type f -name "*CNC*"`
if [ $totValue -gt 0 ]; then
foo=" RedPrairie 2010 TEST Reject alert"
foo="$foo \n"
foo="$foo \n"
# check how many *CNC* files
if [ $inValueST -gt 0 ]; then
foo="$foo Rejected : $inValueST file(s) \n \n $inValueTEST \n \n Files *CNC* are deleted now from Reject folder"
else
foo="$foo inreject : $inValueST file(s) \n"
fi
foo="$foo \n"
echo -e $foo | mail -s "RedPrairie 2010 TEST Reject alert - *CNC* file(s) in Reject folder" myemail@email.co.uk -- -f yoursupport@email.co.uk
fi
# remove old files from outtray
#echo "Removing old log files..."
find /redprairie/comms/test/comms/inreject -type f -name "*CNC*" -mmin +4 -exec rm {} \;
# end script
echo "$inValueTEST"
echo "End..."
exit $rval发布于 2019-11-21 09:54:13
ls命令不像您想象的那样工作-它不接受要搜索前一个模式的目录名;而是由它自己处理每个参数。
若要从没有路径的inreject文件夹中列出所有具有CNC名称的文件,您可以这样做。
(cd $DCS_COMMSDIR/inreject; ls -mQ *CNC*)https://stackoverflow.com/questions/58971553
复制相似问题