ls * CNC * $ DCS_COMMSDIR / inreject -mQ显示inreject文件夹中的所有文件-为什么不仅仅名称为CNC的文件?

问题描述 投票:0回答:1

ls CNC -mQ通过仅显示带有CNC的文件而工作正常,但是ls CNC $ DCS_COMMSDIR / inreject -mQ显示inreject文件夹中的所有文件-为什么?

[在我的脚本(或更确切地说是我刚刚离开的同事那里,我已经对其稍作修改了)中,我需要在电子邮件中列出将为特定部门/用户组删除的所有文件,但是命令ls CNC $ DCS_COMMSDIR / inreject -mQ显示所有文件(删除工作正常)

命令查找$ 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" [email protected] -- -f [email protected]
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
unix ls
1个回答
0
投票

ls命令无法按照您认为的方式工作-它不接受要搜索先前模式的目录名;它宁愿自己处理每个参数。

要列出所有具有CNC名称的文件 从不合格文件夹中的文件不带路径,可以执行

(cd $DCS_COMMSDIR/inreject; ls -mQ *CNC*)
© www.soinside.com 2019 - 2024. All rights reserved.