首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用wildcards...alias或function对shell...find command...names进行Bash

使用wildcards...alias或function对shell...find command...names进行Bash
EN

Stack Overflow用户
提问于 2013-10-14 10:50:24
回答 2查看 23.5K关注 0票数 12

我一直使用find命令在当前目录和所有子目录中查找与模式匹配的文件和目录:

代码语言:javascript
运行
复制
find . -name "*.txt" -print
find . -name "Bill*" -print

但我真正想要的是一个能正确传递通配符的别名或函数。(我过去可以在csh中做到这一点,但现在我正在使用bash。)如果名为"fn“的别名或函数设置正确,我可以通过键入以下命令节省一些时间:

代码语言:javascript
运行
复制
fn "*.txt"
fn "Bill*"

理想情况下,我也希望去掉引号,但我猜这可能是不可能的,因为shell会在调用"fn“之前展开引号。

任何建议都将非常感谢,并将推迟腕管综合征……:)

已解决:在下面的讨论之后,我将其放入我的.bashrc文件中:

代码语言:javascript
运行
复制
fn () {
  find . -name "$1" -print
}

注意参数周围的引号:"$1“。然后可以用更多的引号将文件名表达式括起来进行调用:

代码语言:javascript
运行
复制
fn "*.txt"

编辑:函数名和括号之间必须有空格,因此fn () { ...works fn() { ...不起作用

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-14 10:52:19

不幸的是,通配符必须加引号,否则shell将在可能的情况下展开它们。

幸运的是,有多种方式可以引用它们。

代码语言:javascript
运行
复制
fn '*.txt'
fn Bill\*
票数 13
EN

Stack Overflow用户

发布于 2016-10-13 13:02:32

代码语言:javascript
运行
复制
find ./ -name "*pbs.e*"  -type f -size +10c
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19352820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档