Рассмотрим следующий скрипт:
#!/bin/sh
set -x
find `pwd` -name "file.ext" -exec echo $(dirname {}) \;
set -x
показывает, как работает расширение и какова последняя команда. При запуске выдает следующий вывод:
++ pwd
++ dirname '{}'
+ find /home/kibab -name file.ext -exec echo . ';'
Итак, первое, что раскрывается, это pwd
. Второй $(dirname {})
. Результат этих двух команд затем помещается в команду поиска. Таким образом, вы указываете find на -exec echo .
, поэтому вы видите ожидаемый результат.
Когда вы заменяете basename
на dirname
, расширение по-прежнему имеет место, но результаты расширения отличаются:
pwd
расширен до текущего пути. В моем примере выше результат равен /home/kibab
basename {}
выполнено. Результат этой команды {}
.
Команда поиска выполняется с указанными выше подстановками. Последняя выполненная команда выглядит следующим образом:
find /home/kibab -name '*.png' -exec echo '{}' ';'
После проверки вышеуказанной команды вы заметите, что команда теперь просто отображает любой найденный файл.
Возможно, вы хотите что-то подобное?
find `pwd` -name "file.ext" -printf "%f\n"