12

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

find . -name "*.txt" -print
find . -name "Bill*" -print

但我真正想要的是能够正确传递通配符的别名或函数。(我以前可以在 csh 中执行此操作,但现在我使用的是 bash。)如果正确设置了名为“fn”的别名或函数,我只需键入以下内容即可节省一些时间:

fn "*.txt"
fn "Bill*"

理想情况下,我也想去掉引号,但我猜这可能是不可能的,因为外壳会在调用“fn”之前扩展它们。

任何建议将不胜感激,并将推迟腕管综合症.... :)

已解决:经过下面的讨论,我把它放在我的 .bashrc 文件中:

fn () {
  find . -name "$1" -print
}

注意参数周围的引号:“$1”。然后可以在文件名表达式周围使用更多引号来调用它:

fn "*.txt"

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

4

2 回答 2

13

不幸的是,必须引用通配符,否则 shell 会尽可能扩展它们。

幸运的是,有多种引用方式。

fn '*.txt'
fn Bill\*
于 2013-10-14T02:52:18.913 回答
4
find ./ -name "*pbs.e*"  -type f -size +10c
于 2016-10-13T05:02:32.137 回答