在 find 块内使用时 echo 命令不起作用

在 find 块内使用时 echo 命令不起作用

我的 Linux 脚本中有这个:

find . -name '*.xml' | while read MYXMLFILE; do 

  echo "Checking $MYXMLFILE"

  sleep .5

  ....
  ....

  fi

done

但我发现,尽管该位置有许多 .xml 文件,但 echo 却没有执行任何操作。

这里有什么问题?

答案1

请尝试以下操作:

  for MYXMLFILE in `find . -name '*.xml'`; do 
  echo "Checking $MYXMLFILE"    
  sleep .5
  ....
  ....
done

答案2

如果你希望使用带有特殊字符的 xml 文件,例如空格file 1.xml,你可以使用 -exec 创建一个 find 命令,例如

find -name '*.xml' -exec echo "Checking '{}'" \; -exec cat {} \;

其中{}是 找到的文件名的占位符find,它可以管理带有特殊字符的文件名。

如果您的文件名没有包含特殊字符,DTdev 使用for命令的答案可能会很好用。

编辑:如果你想做更复杂的事情,你可以创建一个单独的 shellscript,通过-exec使用文件名作为参数来调用它,例如

find -name '*.xml' -exec ./doer-script {} \;

相关内容