Linux shell: 如何给find命令的别名赋参数?
Linux shell: How to give parameter to alias of find command?
例如,我希望查找所有名为 "Makefile" 的文件的当前目录(不包括 ./bin),作为参数和 grep "library",如下所示:
find . ! -path "./build" -name "*Makefile"|xargs grep library
我不想每次都输入所有这些,我只想制作一个带有 2 个参数的 "alias",例如:
myfind "*Makefile" "library"
myfind的find参数是fo "find" command as "name","grep" command的第二个参数,也希望星号“*”可以作为参数的一部分传递,没有被解析。
这样的别名怎么写?
你不能用别名来做到这一点。你可以写一个小脚本,例如
#!/bin/bash
find . ! -path "./build" -name ""|xargs grep
将其另存为 myfind
在路径中的某处,并确保删除别名。
使用函数:
myfind() { find . ! -path "./build" -name ""|xargs grep ""; }
您使用了标签 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 脚本或函数来进一步简化它。
例如,我希望查找所有名为 "Makefile" 的文件的当前目录(不包括 ./bin),作为参数和 grep "library",如下所示:
find . ! -path "./build" -name "*Makefile"|xargs grep library
我不想每次都输入所有这些,我只想制作一个带有 2 个参数的 "alias",例如:
myfind "*Makefile" "library"
myfind的find参数是fo "find" command as "name","grep" command的第二个参数,也希望星号“*”可以作为参数的一部分传递,没有被解析。
这样的别名怎么写?
你不能用别名来做到这一点。你可以写一个小脚本,例如
#!/bin/bash
find . ! -path "./build" -name ""|xargs grep
将其另存为 myfind
在路径中的某处,并确保删除别名。
使用函数:
myfind() { find . ! -path "./build" -name ""|xargs grep ""; }
您使用了标签 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 脚本或函数来进一步简化它。