Is there any way to get the basename
in the command find
?
What I don't need:
find /dir1 -type f -printf "%f\n"
find /dir1 -type f -exec basename {} \;
Why you may ask? Because I need to continue using the found file
. I basically want something like this:
find . -type f -exec find /home -type l -name "*{}*" \;
And it uses ./file1
, not file1
as the agrument for -name
.
CodePudding user response:
Simply spawn a bash
shell:
find /dir1 -type f -exec bash -c '
base=$(basename "$1")
echo "$base"
do_something_else "$base"
' bash {} \;
$1
in the bash
part is each file filtered by find
.
CodePudding user response:
You'll have to forward it to another evaluator. There is now way to do that in find
.
find . -type f -printf '%f\0' |
xargs -r0i find /home -type l -name '*{}*'