Why using dirname in find command gives dots for each match?

前端 未结 7 1462
清酒与你
清酒与你 2021-02-01 15:16

I\'m using find for a task and I noticed that when I do something like this:

find `pwd` -name \"file.ext\" -exec echo $(dirname {}) \\;

it will

7条回答
  •  清酒与你
    2021-02-01 15:40

    So the problem is that $(...) or `...` starts a new shell before make the replacement.

    Consider using bash -c:

    $ find . -name '*.PNG' -exec bash -c 'git mv {} $(dirname {})/$(basename {} .PNG)48.png' \;
    

    That renames any icon on a git repo to a more standard form.

    Here {} is replaced before executing anything, so the problem is gone.

    For that example, TMTOWTDI, but I try to keep it simple so you can start whatever you really need to do.

提交回复
热议问题