Это не ответ, а предложение о том, как вы могли бы найти ответ.
Попробуйте запустить xev , Вы должны убедиться, что прокрутка вверх / вниз в окне xev приводит к созданию журналов с помощью кнопок мыши 4 и 5, например:
ButtonRelease event, serial 46, synthetic NO, window 0x4000001,
root 0xc4, subw 0x0, time 169151426, (78,60), root:(142,831),
state 0x800, button 4, same_screen YES
ButtonPress event, serial 46, synthetic NO, window 0x4000001,
root 0xc4, subw 0x0, time 169151506, (78,60), root:(142,831),
state 0x0, button 5, same_screen YES
Если это не так, это может быть проблема конфигурации X, т.е. ваши входы прокрутки мыши каким-то образом отображаются на некоторые другие ключевые события. Но я думаю, что в первую очередь стоит поискать конфигурацию i3. Я предполагаю, что переключение рабочего стола будет функцией, и поэтому может быть вариант, когда он привязан к ключу (-ам) в конфигурации.
В основном; выяснить, какие события производят прокрутки мыши, а затем выполнить для них grep-конфиги.
Jq
будет подходящим инструментом для обработки/анализа JSON данных:
for f in *.json; do
if jq -e 'keys_unsorted as $keys
| ($keys | length == 1)
and.[($keys[0])] == []' "$f" > /dev/null; then
mv "$f" error_dir/
fi
done
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