Обновление: поскольку вы указали, что используете Linux, большинство опций, которые я первоначально описал, не имеют значения, за исключением команды find :
find . -name "*.exe" \( -size +200k -o -size -120k \)
Чтобы переместить все соответствующие файлы в другой каталог, у вас есть несколько вариантов.
Используйте аргумент -exec , который (как следует из названия) позволяет вам выполнить данную команду для каждого соответствующего файла. Смотрите man find для получения дополнительной информации.
находить . -name "* .exe" \(-size +200k -o -size -120k \) -exec mv {} ./myFolder \;
Здесь {} заменяется именем каждого файла в процессе его обработки. Смотрите также man mv для информации об этой команде.
В качестве альтернативы, оберните всю команду find в backticks и передайте ее в качестве первого аргумента mv:
найти. -name "* .exe" \(-size +200k -o -size -120k \) `./myFolder
Вы также можете сделать то же самое, отправив вывод команды find в xargs:
находить . -name "* .exe" \(-size +200k -o -size -120k \) | xargs -i mv {} ./myFolder
Еще раз, {} заменяется текущим именем файла. Смотрите man xargs для получения дополнительной информации.
Наконец, чтобы выполнить MyExec.exe (я предполагаю, что вы используете Wine для этого):
wine ./myFolder/MyExec.exe
Я сохраню свой первоначальный ответ ниже на случай, если кому-то понадобится сделать что-то подобное в Windows.
Есть несколько вариантов, в зависимости от того, как вы хотите выполнить поиск.
Поскольку вы упоминаете файлы .exe, я предполагаю, что вы находитесь в Windows. Первый вариант будет использовать окно поиска в проводнике Windows. Просто перейдите в папку, в которой вы хотите начать поиск, нажмите F3 и введите следующий поисковый запрос:
* .exe (Размер:<120 КБ ИЛИ Размер:> 200 КБ)
Для получения дополнительной информации см. Дополнительные советы по поиску в Windows.
Чтобы переместить файлы, просто выберите их и перетащите (или вырежьте и вставьте) в целевую папку.
Если вы хотите сделать это из командной строки (например, если процесс должен быть автоматизирован):
forfiles /m * .exe /s /c "cmd /c, если @fsize GTR 204800 (echo @path), иначе, если @fsize LSS 122880 (echo @path)"
Для получения дополнительной информации см. Документацию для forfiles и if.
Чтобы переместить файлы, замените echo @path на move @path C:\destination\folder .
В качестве альтернативы Powershell обеспечивает более чистый синтаксис:
Get-ChildItem -Recurse | Где-объект {$ _.Расширение -eq ".exe" -and ($ _.Длина -gt 204800 -или $ _.Длина -lt 122880)}
Для получения дополнительной информации см. Документацию по командлетам Get-ChildItem и Where-Object. Обратите внимание, что размеры файлов указаны в байтах (204800 B = 200 кБ и 122880 B = 120 кБ).
Чтобы переместить файлы, перенаправьте вывод вышеизложенного в командлет Move-Item.
Наконец, если у вас есть Cygwin или какая-либо другая Unix-совместимая оболочка (что, я полагаю, вы делаете из тега "bash"), вы также можете использовать команду find :
находить . -name "* .exe" \(-size +200k -o -size -120k \)
Для получения дополнительной информации см. man find.
Чтобы переместить файлы, используйте аргумент -exec .
Что касается второй части вашего вопроса, возможно, вы могли бы уточнить, чего вы пытаетесь достичь, выполнив «executetable.exe» и как это связано с поиском и перемещением других файлов .exe.