Linux shell:如何为find命令的别名赋予参数?

时间:2017-01-03 11:17:53

标签: linux parameters grep find alias

例如,我希望查找名为" Makefile"的所有文件的当前目录(不包括./bin),作为参数和grep"库",如下所示:

find . ! -path "./build" -name "*Makefile"|xargs grep library

我不是每次都输入所有这些,我只是想做一个"别名"有2个参数,如:

myfind "*Makefile" "library"

myfind的find参数是fo" find"命令为" name"," grep"的第二个参数命令,我也希望星号" *"可以作为参数的一部分传递,而不进行解析。

如何写这样的别名?

3 个答案:

答案 0 :(得分:2)

使用功能:

 Generic gen = new Generic(1);
 MyClass myClass = gen.get_a(new MyClass());

答案 1 :(得分:1)

你不能用别名做到这一点。你可以写一个小脚本,例如。

#!/bin/bash
find . ! -path "./build" -name "$1"|xargs grep $2

将其保存为路径中的myfind,并确保删除别名。

答案 2 :(得分:1)

你使用了linux标签,所以我假设你使用的是GNU grep。 GNU grep(至少grep (GNU grep) 2.25)支持以下选项,使您的任务变得非常简单。让我引用grep --help

 -r, --recursive           like --directories=recurse
 --include=FILE_PATTERN  search only files that match FILE_PATTERN
 --exclude=FILE_PATTERN  skip files and directories matching FILE_PATTERN
 --exclude-from=FILE   skip files matching any file pattern from FILE
 --exclude-dir=PATTERN  directories that match PATTERN will be skipped.

所以你的任务可以通过以下方式完成:

grep -r --include=Makefile --exclude-dir=build library

当然,您可以创建一个shell脚本或函数来进一步简化它。