Обновление: поскольку вы указали, что используете 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.