在find -exec中使用别名

Jes*_*kum 17 bash alias find

我在bash中有一个很长的命令,我不想一直打字,所以我在我的.profile中添加了一个别名

alias foo='...'
Run Code Online (Sandbox Code Playgroud)

现在我想使用find -exec来执行这个别名

find . -exec foo '{}' \;
Run Code Online (Sandbox Code Playgroud)

但找不到foo:

find:foo:没有这样的文件或目录

是否可以在find中使用别名?

Jon*_*len 11

find本身对别名一无所知,但你的shell确实如此.如果您使用的是最新版本bash(我认为4.0添加了此功能),您可以使用find . -exec ${BASH_ALIASES[foo]} {} \;在命令行中的该点插入别名的文字内容.


jma*_*man 9

不,发现对你的别名一无所知.别名与环境变量不同,因为它们不是由子进程"继承"的.

您可以使用相同的命令创建shell脚本,设置+ x权限并将其放在路径中.这将与find一起使用.


Mz *_*z A 7

在处理 find 结果时调用别名的另一种方法是使用类似这样的答案

所以以下应该有效:

alias ll="ls -al"
find . -type d | while read folder; do ll $folder; done
Run Code Online (Sandbox Code Playgroud)