파일 이름(또는 본문)에 문자열이 포함된 여러 파일을 찾아서 모두 특정 폴더로 이동하려면 어떻게 해야 합니까?

파일 이름(또는 본문)에 문자열이 포함된 여러 파일을 찾아서 모두 특정 폴더로 이동하려면 어떻게 해야 합니까?

가설 - 파일 이름에 "heavengames"라는 단어가 포함된 여러 개별 디렉토리에 있는 모든 HTML 파일(두 번째 질문으로 본문에 "heavengames"라는 단어가 포함된 모든 HTML 파일)을 이름으로 이동하려면 어떻게 해야 할까요? 새 디렉터리를 만들고 싶으면 어떻게 해야 합니까? "파라다이스 게임 스레드"?

답변1

이름에 이 단어가 포함된 파일을 이동하려면:

find /path/to/dir1 /path/to/dir2 /and/so/on -type f -iname "*heavengames*" \
-exec mv -t /path/to/heavengames-threads {} \+

텍스트에 단어가 포함된 파일을 이동하려면:

find /path/to/dir1 /path/to/dir2 /and/so/on -type f -exec grep -q heavengames {} \; \
-exec mv -t /path/to/heavengames-threads {} \+

추신: 모든 것이 올바른지 확인하려면 처음 실행 시 echobefore를 추가하세요.mv

답변2

파일 이름을 기준으로 zsh 또는 bash ≥4에서:

mkdir heavengames-threads
mv **/*heavengames*.html heavengames-threads/

유연성을 높이려면(예를 들어 디렉터리 계층 구조를 다시 만들려면zmv(가지다이 웹 사이트에는 많은 예가 있습니다.).

grep파일 내용을 검색하는 데 사용됩니다 . 최신 버전의 GNU 유틸리티 사용(즉, 내장되지 않은 Linux 또는 Cygwin에서):

grep -RZ heavengames . | xargs -0 mv -t heavengames-threads/

보다 이식성이 뛰어난 명령을 사용하려면 find.see를 사용하세요.러쉬의 대답.

관련 정보