Скажи, что у меня есть следующий файл
this/is/my/file.txt
Могу ли я найти этот файл, если знаю, что он находится в каталоге /my/ ?
Скажи, что у меня есть следующий файл
this/is/my/file.txt
Могу ли я найти этот файл, если знаю, что он находится в каталоге /my/ ?
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)-release (и GNU bash, version 3.2.53(1)-release на OSX) и не слишком полагается на GNUisms.