当前位置: 首页 > 编程笔记 >

Linux Shell在目录下使用for循环结合if查找文件的巧用

姜玉泽
2023-03-14
本文向大家介绍Linux Shell在目录下使用for循环结合if查找文件的巧用,包括了Linux Shell在目录下使用for循环结合if查找文件的巧用的使用技巧和注意事项,需要的朋友参考一下

1.for循环对目录做遍历,if判断文件是否为要查找的文件。

示例1:

#!/bin/bash
if [ $# -lt 1 ];then
 echo "Usage:$0 + filepath"
 exit
fi          #判断用户是否输入了参数
match=$1  #将要查的文件赋值给变量match
found=0    #定义一个初始变量作为发生条件,当文件找到时对此变量重新赋值
for file in /etc/*  #对目录进行遍历
do
 if [ $file == $match ];then   #判断文件是否匹配
   echo "the file $match was found!"
   found=1               #当文件匹配时,对初始变量重新赋值
   break                  #文件找到后跳出循环
 fi
done
[ $found -ne 1 ] && echo "the file $match is not in /etc directory."   #做最终的判断,文件未找到时found仍然是0,判断条件成立,输出文件未找到;当文件找到时,found被赋值为1,条件不成立,不做输出。

示例2:对脚本做修改,让用户自定义要查找的文件以及在那个目录下查找

#!/bin/bash
if [ $# -lt 2 ];then
 echo "Usage:$0 + filepath + directorypath"
 exit
fi
match=$1
found=0
for file in ${2}*    #在位置参数2,用户给定的目录中(一层目录)遍历所有文件
do
 if [ $file == $match ];then
   echo "the file $match was found!"
   found=1
   break
 fi
done
[ $found -ne 1 ] && echo "the file $match is not in /etc directory."

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对小牛知识库的支持。如果你想了解更多相关内容请查看下面相关链接

 类似资料:
  • 我有一个380行20列的表格。我想从该表中删除符合特定条件的行。 为了澄清问题,假设我有以下列表: 我想删除在列表中找到姓名的所有人员的数据。 例如,假设我的数据如下所示: 我想删除、和的数据。所以输出应该是: 我的代码正在运行,但数据没有从我的原始数据中删除。当我打开新的测试.txt文件时,我可以看到数据没有被删除。 我可以肯定错误在< code > if data[row][0]= =(I f

  • 问题内容: 我知道如何在单独的行上同时使用for循环和if语句,例如: 而且我知道当语句很简单时,我可以使用列表推导来组合这些内容,例如: 但是我找不到一个很好的例子,可以在任何地方(复制和学习)演示一组复杂的命令(不仅仅是“ print x”),这些命令是在for循环和某些if语句组合后发生的。我期望的是: 这不是python应该工作的方式吗? 问题答案: 您可以使用以下生成器表达式:

  • 如何更改下面的代码来查看目录中的所有.log文件,而不是只查看一个文件? 我需要循环遍历所有文件,删除所有不包含“step4”或“step9”的行。目前,这将创建一个新文件,但我不确定如何在这里使用循环(newbie)。

  • 本文向大家介绍javascript中for/in循环及使用技巧,包括了javascript中for/in循环及使用技巧的使用技巧和注意事项,需要的朋友参考一下 JavaScript 支持不同类型的循环: for - 循环代码块一定的次数 for/in - 循环遍历对象的属性 while - 当指定的条件为 true 时循环指定的代码块 do/while - 同样当指定的条件为 true 时循环指定

  • 问题内容: 我有一个包含约1000个文件名的列表,可在目录及其子目录下进行搜索。有数百个具有超过1,000,000个文件的子目录。以下命令将运行find 1000次: 有更快的方法吗? 问题答案: 如果每行只有一个文件名: (该选项意味着grep搜索给定文件中的所有模式。) 的说明: 在被称为过程subsitution,并且有点类似。这种情况是等效的(但是使用流程替换更整洁,可能更快一些): 调用

  • 我试图让applescript与bash for循环交互,这是我代码的一部分,以避免手动列出每个主机,并为hosts2中找到的每个主机执行单独的tell/end tell块。txt文件。 该脚本的目的是在我的Mac电脑上打开一个新的终端选项卡,并在每个新终端中自动启动“screen-r$HOST”,直到主机2中的主机列表结束。txt文件。每个主机都列在自己的行中。 我尝试了一个包罗万象的for循环