Bash回音和动作顺序

Bash回音和动作顺序,bash,echo,Bash,Echo,我创建了一个bash脚本来查找与模式匹配的文件,并在找到时复制它们。 我的想法基本上是: 回音“开始” 在这里列出文件 回声“找到一个” 复制它 上到下一个测试它 回音“完成” 但基本上我得到的是脚本完成了它的工作,并在最后为每个相关文件回显一个“find one”,就好像我的脚本正在处理所有请求,然后回显,而不是按照我尝试的顺序。我做错了什么?谢谢 基于这些非常少量的信息,您的问题可能是从“语法错误”到“最终不理解shell脚本如何工作”的整个范围。 然而,由于这是一个“答案”,我试图回答

我创建了一个bash脚本来查找与模式匹配的文件,并在找到时复制它们。 我的想法基本上是:

  • 回音“开始”
  • 在这里列出文件
  • 回声“找到一个”
  • 复制它
  • 上到下一个测试它
  • 回音“完成”

但基本上我得到的是脚本完成了它的工作,并在最后为每个相关文件回显一个“find one”,就好像我的脚本正在处理所有请求,然后回显,而不是按照我尝试的顺序。我做错了什么?谢谢

基于这些非常少量的信息,您的问题可能是从“语法错误”到“最终不理解shell脚本如何工作”的整个范围。 然而,由于这是一个“答案”,我试图回答你们的问题。如果计划的任务只是“查找与模式匹配的文件,并在找到时复制它们”,那么已经有一个命令执行此操作:

$ find ./ -name "m*a*tch" -exec cp {} <destination> \;
$find./-name“m*a*tch”-exec cp{};
“find”根据一个模式查找文件,然后它就可以做很多事情,例如运行bash命令。 “-exec”后面的字符串可以是任何shell命令(多个),甚至可以是对现有shell脚本的调用。该行必须以“\;”结尾。“{}”表示模式找到的文件名,其中filename表示文件的整个路径


总体思路:如果您需要在linux中执行某些操作,那么很有可能命令已经执行了,因此请先阅读文档,这样您可以在收集知识的同时节省大量工作。

“而不是按照我尝试过的顺序”-拥有什么?我闻到了Microsoft的这种策略:-)。你需要重新思考你处理这类任务的方法。构建庞大的列表,然后浏览它们,这是一个糟糕代码设计的信号(尽管我不认为这总是可以避免的)。