Исключить строку из выходного файла, если символы в столбцах 9 -14 не найдены в другом файле

Итак, вы хотите просмотреть каталоги вида */analysis, исключая определенные подкаталоги.

Вместо поиска всего под .ищите только под */analysis.

Чтобы исключить подкаталог, используйте -prune. Это действие указывает find не проходить рекурсивно по этому подкаталогу.

Наконец, чтобы проверить, существует ли файл, соответствующий шаблону, вам нужно вызвать оболочку. Вы вызываете testнепосредственно из find, но testне выполняет сопоставление с образцом, поэтому проверяется только наличие файла, имя которого содержит буквальный символ *. Вызовите sh, передав ему имя каталога в качестве аргумента :-exec sh -c '…' {} \;. В коде sh разверните подстановочный знак, чтобы создать список соответствующих файлов, и проверьте, существует ли хотя бы один существующий файл.

find./*/analysis -name "doc" -prune -o -name "gold" -prune -o \
     -type d \! -exec sh -c 'set -- "$0"/*_out.csv; test -e "$1"' {} ';' -print

(Я предполагаю, что не существует оборванных символических ссылок, имя которых заканчивается на _out.csv.)

0
07.08.2021, 00:46
0 ответов

Теги

Похожие вопросы