mkdir -p error_folder && for json in./*.json; do if jq -e '.. | select(type == "array" and length == 0)' "$json" >/dev/null then mv "$json" error_folder/ fi done
Это более или менее тот же подход, который использовал Роман в своем ответе , но использует другое
jq
выражение.Выражение
..|select(type == "array" and length == 0)
рекурсивно рекурсирует полную структуру JSON и выберет все ее биты, которые являются массивами нулевой -длины (в любом месте, на любой глубине ).Если
select()
выполнено успешно, тоjq
завершится с нулевым статусом выхода (успех ), что означает, что документ JSON содержит где-то пустой массив (или файл полностью пуст ). Это инициирует перемещение документа вerror_folder
в сценарии.Из комментариев ниже видно, что пользователя интересует только массив
WarehouseActivity
.Мой код с измененным
jq
выражением:mkdir -p error_folder && for json in./*.json; do if jq -e '.. |.WarehouseActivity? | select(type == "array" and length == 0)' "$json" >/dev/null then mv "$json" error_folder/ fi done
Я решил это
sudo mkdir -p /usr/local/n && chown -R $(whoami) /usr/local/n/
И
sudo chown -R $(whoami) /usr/local/bin /usr/local/lib /usr/local/include /usr/local/share
В этой статье описаны проблемы, с которыми вы сталкиваетесь, а также ПРАВИЛЬНЫЙ способ их устранения. Вы всегда должны избегать запуска sudo, где это возможно.
https://guillermo.at/update-node-proper-way
Чтобы обновить npm:
npm i -g n
N_PREFIX=$HOME/.local n stable