Использование сценариев bash, я ищу, чтобы попытаться найти файл, основанный на пути, однако я бы хотел поискать со дна пути вверх. что-то вроде/path/to/directory/here, а затем ищите «здесь» для файла «.important», затем перейдите в «каталог» и найдите «.important» и так далее дерево. Я не хочу спускать нисходящую точку на пути. Thanksпоиск файлов по пути внизу вверх bash
0
A
ответ
1
Простой, как только вы понимаете манипуляции строк в bash.
dest=/path/to/directory/here
curr=
# quote right-hand side to prevent interpretation as glob-style pattern
while [[ $curr != "$dest" ]]; do
if [[ -e $curr/.important ]]; then
printf 'Found ' >&2
printf '%s\n' "$curr/.important"
else
printf '%s\n' "Not found at $curr" >&2
fi
rest=${dest#$curr/} # strip $curr/ from $dest to get $rest
next=${rest%%/*} # strip anything after the first/from next
[[ $next ]] || break # break if next is empty
curr=$curr/$next # otherwise, add next to curr and recur
done
См. http://wiki.bash-hackers.org/syntax/pe для получения дополнительной информации о синтаксисе расширения строки, используемом здесь.
Поочередно:
(set -f; cd /; IFS=/; for dir in $dest; do
cd "$dir" || break
if [ -e .important ]; then
pwd
break
fi
done)
Ключевые моменты:
set -f
отключает подстановку; в противном случае это будет очень плохо для каталога с именем*
.IFS=/
устанавливает разделение струн на расширение для работы на/
.for dir in $dest
безопасен только после выполнения двух вышеуказанных операций.break
ИНГ еслиcd
терпит неудачу имеет важное значение для обеспечения того, чтобы ваш сценарий на самом деле в каталоге, что он думает, что это в.
Обратите внимание, что это делается в субоболочке (в скобках), чтобы предотвратить его изменения к настройкам оболочки (set -f
и IFS=
) от воздействия на большой скрипт. Это означает, что вы можете использовать его в $()
и читать его вывод через stdout в переменную оболочки, но вы не можете установить переменную внутри нее и ожидать, что эта переменная все еще будет установлена в родительском скрипте.
Смежные вопросы
- 1. bash grep поиск файлов по regex
- 2. Linux: поиск пути просмотра PDF по умолчанию в Bash
- 3. Поиск файлов пользователя по относительному и абсолютному пути
- 4. Python: поиск файлов по заданному пути, но не файлов в каталогах по заданному пути
- 5. Поиск файла по пути
- 6. Поиск файлов итеративно в bash
- 7. Excel внизу вверх автозаполнение/добавление
- 8. Bash - Поиск файлов с повторным номером по имени
- 9. Поиск файлов в терминале Git Bash
- 10. bash scripting. Поиск по шаблону
- 11. поиск по ключу вверх вместо удара ввести
- 12. Загрузка файлов XML по пути
- 13. Скользящее окно вверх/вниз мерцает внизу
- 14. Проблемы с загрузкой файлов по пути
- 15. RubyMine поиск проект для файла по пути
- 16. bash поиск файлов в каталогах рекурсивно
- 17. Bash scripting: Найти все типы файлов и пути
- 18. Поиск элемента внизу на странице
- 19. Программа bash не найдена по пути?
- 20. Динамическое изменение bash подсказки по пути
- 21. Изменить содержимое div - объявления внизу/вверх
- 22. Переместить изображение внизу вверх в android
- 23. WP 8.1 внизу вверх бесконечная прокрутка
- 24. RefreshListView возвращающий элемент внизу не вверх?
- 25. Сортировка файлов в подпапках по дате - bash
- 26. Нечеткий поиск файлов по каталогу?
- 27. Поиск по расширениям файлов VB.NET
- 28. DOMXPath пути показывая вверх звездочками
- 29. Roslyn - поиск всех документов по такому пути
- 30. Поиск дешевого пути по двоичному дереву?
Это сработало отлично! Спасибо! – CainKnightWind