在条件中搜索 exe 文件

was*_*rar 0 bash shell linux-mint

我想在当前文件夹及其子文件夹中搜索大于 200 kB 或小于 120 kB 的所有 .exe 文件。然后我想将它们移动到另一个名为“文件夹”的文件夹中,并在该文件夹中无限执行名为“executable.exe”的文件,并显示有关其内存消耗的一些信息。

有任何想法吗?

我正在使用 Linux Mint。根据Indrek 的回答,我使用 find 命令搜索“.exe”文件。

find . -name "*.exe" \( -size +200k -o -size -120k \)
Run Code Online (Sandbox Code Playgroud)

现在我想要做的是将这些文件移动到另一个名为“myFolder”的文件夹中,然后我必须执行该文件夹中名为“MyExec.exe”的任何文件

Ind*_*rek 5

更新:由于您指定使用的是 Linux,所以我最初描述的大多数选项都无关紧要,除了find命令:

find . -name "*.exe" \( -size +200k -o -size -120k \)
Run Code Online (Sandbox Code Playgroud)

要将所有匹配的文件移动到另一个目录,您有多种选择。

  1. 使用-exec参数,它(顾名思义)允许您为每个匹配的文件执行给定的命令。有关man find更多信息,请参阅。

    找 。-name "*.exe" \( -size +200k -o -size -120k \) -exec mv {} ./myFolder \;

    在这里,{}被处理的每个文件的名称替换。另请参阅man mv有关该命令的信息。

  2. 或者,将整个find命令包装在反引号中并将其作为第一个参数传递给mv

    mv`找到。-name "*.exe" \( -size +200k -o -size -120k \)` ./myFolder
  3. 您还可以通过将find命令的输出通过管道传输到xargs以下内容来完成相同的操作:

    找 。-name "*.exe" \( -size +200k -o -size -120k \) | xargs -i mv {} ./myFolder

再次{}用当前文件名替换。有关man xargs更多信息,请参阅。

最后,执行MyExec.exe(我假设您为此使用 Wine):

wine ./myFolder/MyExec.exe
Run Code Online (Sandbox Code Playgroud)

我将在下面保留我的原始答案,以防有人需要在 Windows 上做类似的事情。


有多种选择,具体取决于您希望如何执行搜索。

  1. 既然您提到了 .exe 文件,我假设您使用的是 Windows。第一个选项是使用 Windows 资源管理器中的搜索框。只需导航到您要开始搜索的文件夹,点击F3并输入以下搜索查询:

    *.exe(大小:<120kB 或大小:>200kB)

    有关详细信息,请参阅在 Windows 中进行搜索的高级提示

    要移动文件,只需选择它们并将它们拖放(或剪切并粘贴)到目标文件夹。

  2. 如果您想从命令行执行此操作(例如,如果该过程需要自动化):

    forfiles /m *.exe /s /c "cmd /c if @fsize GTR 204800 (echo @path) else if @fsize LSS 122880 (echo @path)"

    有关更多信息,请参阅forfilesif命令的文档。

    要移动文件,请替换echo @pathmove @path C:\destination\folder.

  3. 或者,Powershell 提供了更简洁的语法:

    Get-ChildItem -Recurse | Where-Object { $_.Extension -eq ".exe" -and ( $_.Length -gt 204800 -or $_.Length -lt 122880 ) }

    有关详细信息,请参阅有关Get-ChildItemWhere-Object cmdlet的文档。请注意,文件大小以字节为单位(204800 B = 200 kB,122880 B = 120 kB)。

    要移动文件,请将上述输出通过管道传输到Move-Item cmdlet。

  4. 最后,如果你有 Cygwin 或其他一些兼容 Unix 的 shell(我假设你这样做,来自“bash”标签),你也可以使用find命令:

    找 。-name "*.exe" \( -size +200k -o -size -120k \)

    有关更多信息,请参阅man find

    要移动文件,请使用-exec参数。

至于你问题的第二部分,也许你可以详细说明你试图通过执行“executable.exe”来实现什么,以及它与其他 .exe 文件的查找和移动的关系。