Ситуация: В Linux у меня есть родительская папка с 22 папками различных имен, каждого с файлом конкретного имени asset.xml
. Также в этих папках сотни других папок с asset.xml
в них, но это предыдущие версии, и я не интересуюсь ими. Я должен искать в каждом файле 3 тега "legend|assetID|name"
и возвратите информацию в этих тегах. Они обычно находятся на той же строке, таким образом, я думаю Grep
в порядке.
Что я попробовал:
grep -nr -E "legend|assetID|name" . > /dir/to/the/ReportFile.txt
Это берет слишком долго, и возвратите слишком очень дублированные данные, таким образом, это не практично.
find . -maxdepth 2 -exec grep -E "legend|assetID|name" . > /dir/to/the/ReportFile.txt
Это возвратило ошибку с - должностное лицо, пропускающее аргумент, таким образом, выходной файл был пуст.
find . -maxdepth 2 -| grep -E "legend|assetID|name" . > /dir/to/the/ReportFile.txt
Это возвратило пустой выходной файл.
Вопрос: Как я прохожу каждый подобно названный файл каждый внутренние различно названные папки (которые также имеют другие подпапки с файлами того же имени), и извлеките информацию в 3 тегах и запишите эти данные в выходной файл?
Ваша командная строка с find
было почти корректно :-)
Файл (файлы), найденный find
представлен {}
. -exec
часть командной строки находки должна быть закончена так или иначе, с \;
или часто лучше с +
который вызывает grep
только однажды, и я предполагаю, что Вы работаете grep
только на нормальных файлах -type f
, попробовать
find . -maxdepth 2 -type f -exec grep -E "legend|assetID|name" {} + > ../output
Можно хотеть указать имя файла asset.xml
find . -maxdepth 2 -type f -name asset.xml -exec grep -E "legend|assetID|name" {} + > ../output
Проверьте результат с
cat ../output
Можно хотеть изменить maxdepth к 3 или независимо от того, что подходит.
Я просто нашел решение.
grep -nr -E "legend|assetID|name" /dir/to/the/*/asset.xml > /dir/to/the/ReportFile.txt
*
в пути "подстановочный знак", я должен был пройти каждый каталог. Я думаю, что это только переходит к тому каталогу а не в какую-либо более глубокую папку...?