조건 내에서 exe 파일 검색

조건 내에서 exe 파일 검색

현재 폴더와 하위 폴더에서 200kB보다 크거나 120kB보다 작은 모든 .exe 파일을 검색하고 싶습니다. 그런 다음 "folder"라는 다른 폴더로 이동하고 이 폴더에서 "executable.exe"라는 파일을 무한히 실행하고 메모리 소비에 대한 일부 정보를 표시하려고 합니다.

어떤 아이디어가 있나요?

저는 리눅스 민트를 사용하고 있습니다. 나는 find 명령을 사용하여 ".exe" 파일을 검색했습니다.인드렉의 답변.

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

이제 제가 하고 싶은 일은 해당 파일을 "myFolder"라는 다른 폴더로 옮기는 것입니다. 그런 다음 이 폴더에 있는 "MyExec.exe"라는 파일을 실행해야 합니다.

답변1

업데이트: Linux를 사용한다고 지정했으므로 다음 find명령을 제외하고 제가 원래 설명한 대부분의 옵션은 관련이 없습니다.

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

일치하는 모든 파일을 다른 디렉터리로 이동하려면 몇 가지 옵션이 있습니다.

  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

누군가가 Windows에서 비슷한 작업을 수행해야 하는 경우를 대비하여 아래에 원래 답변을 보존하겠습니다.


검색 실행 방법에 따라 여러 가지 옵션이 있습니다.

  1. .exe 파일을 언급했으므로 Windows를 사용하고 있다고 가정합니다. 첫 번째 옵션은 Windows 탐색기의 검색 상자를 사용하는 것입니다. 검색을 시작하려는 폴더로 이동하여 F3다음 검색어를 입력하세요.

    *.exe(크기:<120kB 또는 크기:>200kB)

    자세한 내용은 다음을 참조하세요.Windows 검색에 대한 고급 팁.

    파일을 이동하려면 해당 파일을 선택하고 대상 폴더에 끌어다 놓기(또는 잘라내어 붙여넣기)하면 됩니다.

  2. 명령줄에서 이 작업을 수행하려는 경우(예: 프로세스를 자동화해야 하는 경우):

    forfiles /m *.exe /s /c "cmd /c @fsize GTR 204800(에코 @path)인 경우 else if @fsize LSS 122880(에코 @path)"

    자세한 내용은 해당 문서를 참조하세요.forfiles그리고if명령.

    파일을 이동하려면 echo @path로 바꾸십시오 move @path C:\destination\folder.

  3. 또는 Powershell은 더 깔끔한 구문을 제공합니다.

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

    자세한 내용은 다음 문서를 참조하세요.Get-ChildItem그리고Where-객체cmdlet. 파일 크기는 바이트 단위입니다(204800 B = 200kB 및 122880 B = 120kB).

    파일을 이동하려면 위의 출력을이동 항목cmdlet.

  4. 마지막으로 Cygwin이나 다른 Unix 호환 셸을 사용할 수 있는 경우("bash" 태그에서 사용 가능하다고 가정) 다음 find명령을 사용할 수도 있습니다.

    찾다 . -이름 "*.exe" \( -size +200k -o -size -120k \)

    자세한 내용은 다음을 참조하세요.man find.

    파일을 이동하려면 -exec인수를 사용하십시오.

질문의 두 번째 부분에 대해서는 "executable.exe"를 실행하여 달성하려는 목표와 이것이 다른 .exe 파일 찾기 및 이동과 어떻게 관련되는지 자세히 설명할 수 있습니다.

답변2

아래 Bash 코드는 파일을 이동해야 합니다. "무슨 말인지 모르겠어요.이 폴더에서 'executable.exe' 파일을 무한히 실행합니다./proc". Cygwin의 파일 시스템을 사용하여 executable.exe.

#!/bin/bash
find . -type f |
    while read FILE
    do
        set -- $(/bin/ls -l "$FILE")
        [ "$5" -lt 120000 -o "$5" -gt 200000 ] && mv "$FILE" folder
    done
echo "Files copied!"
if cd folder
then
    sh toto.sh
else
    echo "Failed to cd into folder!" >&2
fi

그런데, 내 숫자는 정확히 200킬로바이트와 120킬로바이트가 아닙니다. 정확한 바이트 수를 얻으려면 자유롭게 계산해 보십시오(예: 200 * 1024 및 120 * 1024).

관련 정보