在 bash 脚本中使用 find 命令

2024-01-11

我刚刚开始使用 bash 脚本,并且需要对多种文件类型使用 find 命令。

list=$(find /home/user/Desktop -name '*.pdf') 

此代码适用于 pdf 类型,但我想同时搜索多种文件类型,例如 .txt 或 .bmp。您有什么想法吗?


欢迎来到巴什。这是一种古老、黑暗、神秘的东西,具有强大的魔力。 :-)

您询问的选项是针对find但命令不适用于 bash。从命令行,您可以man find查看选项。

您正在寻找的是-o对于“或”:

  list="$(find /home/user/Desktop -name '*.bmp' -o -name '*.txt')"

那是说...不要这样做。像这样的存储可能适用于简单的文件名,但是一旦您必须处理特殊字符(例如空格和换行符),所有的赌注都会消失。看解析L http://mywiki.wooledge.org/ParsingLs了解详情。

$ touch 'one.txt' 'two three.txt' 'foo.bmp'
$ list="$(find . -name \*.txt -o -name \*.bmp -type f)"
$ for file in $list; do if [ ! -f "$file" ]; then echo "MISSING: $file"; fi; done
MISSING: ./two
MISSING: three.txt

路径名扩展(通配符)提供了一种更好/更安全的方式来跟踪文件。然后你还可以使用 bash 数组:

$ a=( *.txt *.bmp )
$ declare -p a
declare -a a=([0]="one.txt" [1]="two three.txt" [2]="foo.bmp")
$ for file in "${a[@]}"; do ls -l "$file"; done
-rw-r--r--  1 ghoti  staff  0 24 May 16:27 one.txt
-rw-r--r--  1 ghoti  staff  0 24 May 16:27 two three.txt
-rw-r--r--  1 ghoti  staff  0 24 May 16:27 foo.bmp

The Bash FAQ http://mywiki.wooledge.org/BashFAQ还有许多关于 bash 编程的其他精彩技巧。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 bash 脚本中使用 find 命令 的相关文章

  • 如何让 Ruby 的 Find.find 遵循符号链接?

    我有一个文件层次结构 一些子目录是相对符号链接 我在用Ruby s Find find http apidock com ruby Find爬行这些目录并找到一些特定的文件 但是 它不会查找任何符号链接的目录 它遵循符号链接的文件 看着源代
  • 使用 Bash 比较 PHP 版本号?

    我有这个脚本 应该确保用户当前的 PHP 版本在某个范围内 尽管它应该可以工作 但某个地方有一个错误 使它认为版本超出范围 有人可以看一下并告诉我我能做什么来解决它 function version echo gawk F printf d
  • 未找到神奇函数“bash”

    我有一堆模拟想要在高性能集群上运行 我应该在这些集群上进行预留以获得计算时间 由于预订是有时间限制的 我正在开发一个自动化脚本 我可以scp进入集群并运行 然后 该脚本将下载相关的模拟文件 运行它们 并上传结果 该自动化脚本的一部分位于ba
  • 获取 Bash 和 KornShell (ksh) 中命令的退出代码

    我想写这样的代码 command some command safeRunCommand command safeRunCommand cmnd 1 cmnd if 0 then printf Error when executing co
  • 调试神秘的git+ssh+proxy失败“bash:没有这样的文件或目录”的艰难方法

    我正在尝试通过 SOCKS5 代理克隆 github 存储库 在 ssh config I have Host github com github com ProxyCommand usr bin nc X 5 x 127 0 0 1 70
  • 如何在带有空格的目录上使用 find ?

    这里有一些奇怪的事情 mkdir p 1 2 3 4 touch 1 2 3 4 file jpg for f in find type f name jpg do echo f done 这返回 1 2 3 4 file jpg and
  • 强制节点在 Windows 上使用 git bash

    我有一个 package json 文件 如下所示 name APP version 3 0 0 private true scripts start node app js test test dbLoad env db test tes
  • 无法从外部 bash 脚本正确设置 MySQL 密码

    我有两个脚本 主要的一个脚本执行一些不同的操作并调用第二个脚本 第二个脚本安装 MySQL 从我的主脚本中我做了这样的事情 read p Set the password for the database min 4 characters
  • Bash,在包含子目录的目录中的每个 .jpg 文件上运行脚本

    我有一些工作代码 它非常简单 它复制每个 jpg 文件 将其重命名为 1 jpg 不用担心 for i in jpg do cp i i jpg 1 jpg done 我如何运行它 以便它适用于目录中的每个文件 该目录的子目录中的每个文件
  • 无法在 Zsh 中找到 Bash 的替代命令

    我将最新的 git completion bash 放入我的 zshrc 中 然后我得到 Users Masi bin shells git git completion bash 2116 command not found comple
  • 如何在bash中使用echo和find?

    我有10个文件 我可以列出它们find type f我想要实现的目标是在使用 find 命令找到所有 10 个文件后向它们发送一条消息 我所尝试过的 find type f exec echo This file found gt gt 逻
  • Yocto for Nvidia Jetson 由于 GCC 7 而失败 - 无法计算目标文件的后缀

    我正在尝试将 Yocto 与 meta tegra 一起使用 https github com madisongh meta tegra https github com madisongh meta tegra 为 Nvidia Jets
  • If 语句不遵循其条件

    在我的滚动代码中 您只需编写 r 然后按 Enter 键 但似乎不会读取该内容并转到重新启动 while 循环的 else 让它滚动的唯一方法是输入除 r 之外的其他内容 而不是 standard in 1 解析错误 bin bash th
  • AWS Session Manager 未获取 bashrc

    我在用AWS 系统管理器会话管理器 https docs aws amazon com systems manager latest userguide session manager html连接到我的 EC2 实例 当我连接时 会话不会
  • Bash 脚本问题

    我可以很好地运行这个命令 并得到我想要的输出 ifconfig eth0 grep HWaddr awk print 5 但是 当我将命令设置为变量并打印该变量时 出现错误 CASS INTERNAL ifconfig eth0 grep
  • str.find 怎么这么快?

    我之前遇到过一个问题 我在迭代字符串并使用切片时寻找子字符串 原来这是一个really关于性能的坏主意 str find速度要快得多 但我不明白为什么 import random import string import timeit Ge
  • Bash 脚本 Mysql 警告:在命令行界面上使用密码可能不安全

    你好 我有一个脚本来对一些 mysql 数据库进行分区 我们正在从 5 5 升级到 5 6 在测试脚本时 我注意到新的 5 6 版本 mysql 返回Warning Using a password on the command line
  • 使用 Vagrant 配置机器并在脚本停止处拾取时是否可以重新启动机器?

    我正在阅读 bash 中的教程 其中他们说重新启动机器 没有直接重新启动服务的选项 这是重新启动机器的问题 然后还有更多命令在配置时仍然需要运行 那么有没有办法在配置过程中重新启动盒子 然后从上次中断的地方继续进行呢 据我所知 如果尝试重新
  • MVVM 中的事件而不是命令?

    在MVVM的各种教程中经常会指出 MVVM的目标不是消除代码隐藏 并且代码隐藏中的一些事件处理可能仍然是必要的 在什么场景下您需要在代码隐藏中编写事件而不是在视图模型中使用命令 一般来说 如果您的代码与 UI 逻辑相关 请将其保留在视图的
  • 在大型文本文件中查找重复记录

    我在一台 Linux 机器 Redhat 上 并且有一个 11GB 的文本文件 文本文件中的每一行包含单个记录的数据 并且该行的前 n 个字符包含该记录的唯一标识符 该文件包含略多于 2700 万条记录 我需要验证文件中不存在具有相同唯一标

随机推荐

  • 在 cordova/phonegap 中使用 npm 包

    我正在尝试使用 NPM 将包添加到我的 Cordova 项目中 但是要么我做错了一些事情 要么我没有得到它应该工作的方式 我正在使用最新版本的 Cordova v3 5 0 我创建了一个应用程序 cordova create TestApp
  • Clojure 中的 mapcat 和 Scala 中的 flatMap 在操作上有什么区别?

    我理解相当于flatMap在 Scala 中是mapcat http clojuredocs org clojure core clojure core mapcat在 Clojure 中 我有一个预感mapcat在 Clojure 中仅适
  • openID 的安全性如何?

    这是可用于高度安全信息的东西还是应该被单站点身份验证系统绕过 这可能是一个愚蠢的问题 因为它听起来不安全 但我想要一些建议 OpenID本身的安全性并不亚于传统的用户名 密码登录 显然 您将大部分安全性委托给了提供商 例如暴力破解预防 密码
  • 如何在 OSX 上的终端中关闭 ls 输出的颜色

    my ls无论我是否键入 所有目录的输出颜色都与文件不同ls or bin ls 我没有LS COLOR东西设置在 bashrc或我能找到的相关文件 我该如何转向off这些颜色 我很高兴只是ls F Thanks 正如评论中指出的 OSXl
  • 按依赖顺序编写 Sql Server 数据库中所有视图/函数/过程的脚本

    Sql Server 2008 可能还有大多数其他版本 Management Studio 有一个 生成脚本 选项 理论上可以使用所有对象编写整个数据库的脚本 右键单击 任务 生成脚本 它适用于大多数情况 但是当您使用它为数据库中的所有视图
  • 无法使用 gcloud 将私有 IP (VPC) 添加到新的 Google Cloud SQL 实例

    我一直在尝试创建一个新的 CloudSQL 实例 并从一开始就附加了私有 IP 文档唯一提示我的是添加 VPC 网络 我正在尝试添加默认值 首先 我为我的项目启用正确的 API 服务 gcloud services enable servi
  • 为什么 nil / NULL 块在运行时会导致总线错误?

    我开始大量使用块 很快就注意到 nil 块会导致总线错误 typedef void SimpleBlock void SimpleBlock aBlock nil aBlock bus error 这似乎违背了 Objective C 忽略
  • 无法理解css的position属性

    If p 标签位置是绝对的div连续出现 但在评论绝对位置之后div下降 即使position relative 谁能告诉我为什么会发生这种情况 before after box sizing border box main content
  • 如何使隐式 ScrollViewer 出现在左侧而不是右侧

    我有一个ScrollViewer当列表中有足够的对象时 它会出现在右侧 如何让它出现在左侧
  • 在jshell中创建自定义反馈模式

    从 jshell 中 set Feedback 的文档来看 有以下几种内置模式 verbose normal concise and silent 是否可以打造一种兼具简洁和静音功能的反馈模式 或者我们可以改变上述任何一种模式吗 或者我们可
  • AS3使用Loader加载受htaccess保护的文件

    我正在尝试将网站上托管的外部 SWF 加载到本地 SWF 文件中 外部 SWF 位于使用 htaccess 的密码保护目录中 这是我当前尝试使用的代码 var loaderUrlRequest URLRequest new URLReque
  • jquery .validate() 变量错误消息

    我在此网站上使用多种语言 并希望以不同的语言显示错误 我想知道是否可以在自定义错误消息中使用变量 这是 JavaScript 代码片段 form validate ajax url notification php dataType jso
  • commitAllowingStateLoss() 和 commit() 片段

    我想在网络后台操作后提交一个片段 我在成功的网络操作后调用 commit 但如果活动进入暂停或停止状态 它就会导致应用程序崩溃 并显示 IllegalState 异常 所以我尝试使用 commitAllowingStateLoss 并且它现
  • 将 SWIG 与采用 std::string 作为参数的方法结合使用

    我使用 SWIG 来包装我的 C 类 有些方法有一个const std string 作为参数 SWIG 创建一个名为的类型SWIGTYPE p std string但是 在 C 中调用该方法时 不能仅为此传递普通字符串 下面的示例只是 S
  • 如何将数据附加到 JTA 事务? (或唯一标识它)

    我有一个 getStockQuote 函数 它将从股票市场获取某个符号的当前股票报价 我的目标是在 JTA 事务中 第一次调用 getStockQuote 将获取股票报价 但同一事务中的所有后续调用将重用相同的股票报价 例如 它不会尝试获取
  • 检查javascript中多维数组中的键是否存在

    希望是一个简单的问题 为什么要检查多维数组中是否存在键 a new Array Array a 0 0 1 a 0 1 2 if a 1 2 undefined alert sorry that key doesn t exist else
  • assembleDebug.dependsOn 不起作用

    首先 这不是这个的重复 错误 在项目 app 上找不到属性 assembleDebug https stackoverflow com q 38547400 770467 问题 自从更新到Android Studio 2 2 gradle插
  • 在 SQL Server 中编写架构脚本

    我想在 SQL Server 数据库中创建一个架构 数据库中还有一堆其他脚本 我可以编写现有架构的脚本吗 我的意思是 假设我们有一张桌子 我们可以 编写一个脚本CREATE TABLE脚本 我们可以编写一个创建架构的脚本吗 谢谢你们的期待
  • 良好的Java进程控制库[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Java 进程控制是出了名的糟糕 主要是由于 Java VM JDK 类 例如 java lang P
  • 在 bash 脚本中使用 find 命令

    我刚刚开始使用 bash 脚本 并且需要对多种文件类型使用 find 命令 list find home user Desktop name pdf 此代码适用于 pdf 类型 但我想同时搜索多种文件类型 例如 txt 或 bmp 您有什么