1

Скажи, что у меня есть следующий файл

this/is/my/file.txt

Могу ли я найти этот файл, если знаю, что он находится в каталоге /my/ ?

1 ответ1

1

Как мне find файл в самой внутренней директории?

Вы можете использовать find для поиска определенного файла (file.txt), и он будет возвращен для вас (в соответствии с указанными параметрами). Но что, если у вас есть два file.txt и вы хотите сопоставить только один, скажем, для использования в сценарии? Введите awk , sort , head и cut:

find /my/ -type f -name file.txt | awk -F/ '{ print NF-1, $0 }' | sort -nr | head -n1 | cut -d " " -f2

Это вернет один результат - самое глубокое совпадение - или ни одного.

объяснение

  • find в /my/ все обычные файлы (-type f) -name d file.txt

  • перейдите к awk и получите его для подсчета количества каталогов (глубины), установив разделитель полей в / (-F/) и добавив к нему префикс (print NF-1, $0)

  • sort количеству, сначала по наибольшему (т.е. большинству каталогов)

  • взять только один результат (head -n1)

  • снимите счетчик глубины (cut -d " " -f2)

Может быть более короткий способ сделать это, но это вернет самый глубокий результат. Он предполагает косую черту / для разграничения каталогов, но я думаю, что мы можем допустить это. Протестировано на GNU bash, version 4.3.30(1)-releaseGNU bash, version 3.2.53(1)-release на OSX) и не слишком полагается на GNUisms.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .