如果结果是文件/dir,则查找具有绝对路径的命令



如果find命令的输出是文件系统上的文件或目录,我想将linux中的find命令别名为一个函数,该函数将打印绝对路径?

这是我到目前为止得到的,但它不起作用。


find_with_abspath(){
    for i in $(find "$@")
    do
        if [ -e "$i" ];
        then
            readlink -m "$i"
        else
            echo -n "$i"
        fi
    done
}

你知道我做错了什么吗?

## define your function
abspath() {
    while read -r; do
        [[ -d $REPLY || -f $REPLY ]] && readlink -m "$REPLY"
    done
}
## run as:
$ find foo -iname "*.png" | abspath
## or:
$ abspath < <(find .. -.. ..)

您不需要在函数中重新定义CCD_ 1。您的函数可以用于获取输入,并打印绝对路径。

适用于ZSH:的siegex答案的改编

# usage: afind . -name *.html
afind() { baseDir=$(readlink -f $1); shift; command find $baseDir "$@" }

最好的解决方案是在调用命令之前将给定给find的路径转换为绝对路径。下面的bash-1-liner通过截取find命令、操作路径然后调用真正的find命令来实现这一点。

find(){ ( set -f; command find $(readlink -f $1) ${@:2}; ) };

最新更新