unix shell脚本中的文件名模式匹配

时间:2014-11-20 07:49:12

标签: unix

cd /DIR1/

if [ -f  abc_*] ; then

ls -l abc_*| awk 'NR >0 && !/^d/ {print $NF}' >>list.txt

chmod 664 list.txt

else

echo "file not found"

fi

它给出错误"二元运算符预期"

如果在目录中找到任何以模式" abc _"开头的文件。它应该创建一个名为list.txt的文件,并将文件名移动到list.txt

2 个答案:

答案 0 :(得分:0)

-f检查是否存在单个文件,您可以使用

if ls abc_* 2>/dev/null; then 
  do stuff
fi

答案 1 :(得分:0)

您可以使用如下单线程查找命令:

find . -maxdepth 1 -name "abc_*" -printf "%f\n" >> list.txt

find命令会在当前找到你的文件(替换。用/ DIR1在/ DIR1中查找)目录

  • maxdepth - 仅在指定的目录中,而不是在每个目录中递归。
  • name名称类似于abc_ *
  • printf - 只打印没有目录前缀的文件名。