Существует ли способ получить полный путь файла, который ищется?
Например:
find .. -name "filename"
Это дает мне результаты как ../filename
но я хочу полный путь.
То, в чем я нуждаюсь, должно найти в родительском каталоге и его детях для определенного файла, который я буду использовать в другом сценарии позже.
Спасибо
Попробуйте что-то как:
find "$(cd ..; pwd)" -name "filename"
Попытайтесь использовать -exec
опция find
:
find .. -name "filename" -exec readlink -f {} \;
Примечание: readlink
печать значение символьной ссылки или канонического имени файла.
Можно использовать bash
Расширение Тильды для получения полного пути текущего рабочего каталога, этот путь find
печать полный путь для результатов также:
find ~+ -type f -name "filename"
, Если выполняется в ~/Desktop
, это расширено до
find /home/yourusername/Desktop -type f -name "filename"
и печатает результаты как:
/home/yourusername/Desktop/filename
Самый простой путь
find "$(pwd -P)" -name "filename"
Также использование PWD может показать Вам полный каталог. Pwd покажет Вам все Ваши каталоги, Вы находитесь в подобном расширение имени файла. Надеюсь, что это помогло.
Это работало на меня, но только возвратит первое вхождение.
realpath $(find . -type f -name filename -print -quit)
Получить полные пути для всех случаев (как предложено Sergiy Kolodyazhnyy)
find . -type f -name filename | xargs realpath
Удаление последнего компонента каталога с Расширением параметра.
find "${PWD%/*}" -name 'filename'
Пример того, как можно использовать mapfile для сохранения вывода от находки до индексного массива для более позднего использования.
mapfile -t -d '' < <(find ${PWD%/*} -name 'filename' -print0)
(если никакое имя массива не будет указано, то MAPFILE будет именем массива по умолчанию).
for i in "${MAPFILE[@]}"; do
echo "$((n++)) $i"
done