현재 폴더와 하위 폴더에서 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 \)
일치하는 모든 파일을 다른 디렉터리로 이동하려면 몇 가지 옵션이 있습니다.
-exec
(이름에서 알 수 있듯이) 일치하는 각 파일에 대해 주어진 명령을 실행할 수 있는 인수를 사용하십시오 . 보다man find
자세한 내용은.찾다 . -name "*.exe" \( -size +200k -o -size -120k \) -exec mv {} ./myFolder \;
여기서는
{}
처리되는 각 파일의 이름으로 대체됩니다. 또한보십시오man mv
해당 명령에 대한 정보를 보려면또는 전체
find
명령을 백틱으로 묶고 다음 인수로 첫 번째 인수로 전달합니다mv
.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(크기:<120kB 또는 크기:>200kB)
자세한 내용은 다음을 참조하세요.Windows 검색에 대한 고급 팁.
파일을 이동하려면 해당 파일을 선택하고 대상 폴더에 끌어다 놓기(또는 잘라내어 붙여넣기)하면 됩니다.
명령줄에서 이 작업을 수행하려는 경우(예: 프로세스를 자동화해야 하는 경우):
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
.또는 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.
마지막으로 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).