包装bashfind命令

我想写一个简单的bash脚本来包装认的unix / linux查找程序在bash中find匹配的多个文件

这是我的程序名为my_find_command :

#!/bin/bash patt="" first=true for i in "$@"; do if [ "$first" = true ]; then patt="-name '$i'" first=false else patt="${patt} -o -name '$i'" fi done echo "$patt" find . -type f ( ${patt} ) echo 'done'

假设我有一些文件find命令将能够返回一些文件

但是,当我打电话my_find_command icon.png profile.png我什么都没有。

Linux AWK的帮助。 有一个AWK的时间

Bash匿名pipe道

在Bash中做什么<()?

有没有办法看到一个path的所有中间目录的权限..?

文件和terminal之间运行退出命令有什么区别

这里出了什么问题?

通过BASH用下划线replace空格

如何在没有填充磁盘空间的情况下在tar归档文件中的grep模式

如果使用三通,如何检查退出

运行一个命令作为后台进程/服务

bash脚本命令“陷阱”在docker容器中不起作用

字符串中的引号不会按照您希望的方式工作。 你是对的./my_find_command icon.png不会找到icon.png 。 但是,它会找到'icon.png' 。 例如:

$ ls 'icon.png' my_find_command $ ./my_find_command my_find_command icon.png -name 'my_find_command' -o -name 'icon.png' ./'icon.png' done

问题来自于尝试将多个命令参数放入一个变量中。 有关错误发生方式的完整说明,请参阅“我试图将一个命令放入一个变量中,但复杂的情况总是失败!” 。 相反,使用一个数组:

#!/bin/bash patt=() for i in "$@"; do if [ "${#patt}" -eq 0 ]; then patt=(-name "$i") else patt+=(-o -name "$i") fi done echo "${patt[@]}" find . -type f ( "${patt[@]}" ) echo 'done'

这现在打印正确的文件

$ ls 'icon.png' icon.png my_find_command $ ./my_find_command my_find_command icon.png -name my_find_command -o -name icon.png ./icon.png ./my_find_command done

为了演示通配符正确工作:

$ ls 'icon.png' icon.png my_find_command $ ./my_find_command my_find_command '*icon.png*' -name my_find_command -o -name *icon.png* ./icon.png ./my_find_command ./'icon.png' done

相关文章

本篇内容主要讲解“gitee如何上传代码”,感兴趣的朋友不妨来...
这篇“从gitee上下的代码如何用”文章的知识点大部分人都不太...
这篇文章主要介绍“gitee如何下载仓库里的项目”,在日常操作...
本篇内容主要讲解“怎么在Gitee上更新代码”,感兴趣的朋友不...
本文小编为大家详细介绍“怎么将工程托管到gitee”,内容详细...
这篇文章主要介绍了gitee中图片大小如何调整的相关知识,内容...