![파일 이름(또는 본문)에 문자열이 포함된 여러 파일을 찾아서 모두 특정 폴더로 이동하려면 어떻게 해야 합니까?](https://linux55.com/image/23307/%ED%8C%8C%EC%9D%BC%20%EC%9D%B4%EB%A6%84(%EB%98%90%EB%8A%94%20%EB%B3%B8%EB%AC%B8)%EC%97%90%20%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%B4%20%ED%8F%AC%ED%95%A8%EB%90%9C%20%EC%97%AC%EB%9F%AC%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%B0%BE%EC%95%84%EC%84%9C%20%EB%AA%A8%EB%91%90%20%ED%8A%B9%EC%A0%95%20%ED%8F%B4%EB%8D%94%EB%A1%9C%20%EC%9D%B4%EB%8F%99%ED%95%98%EB%A0%A4%EB%A9%B4%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
가설 - 파일 이름에 "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 {} \+
추신: 모든 것이 올바른지 확인하려면 처음 실행 시 echo
before를 추가하세요.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를 사용하세요.러쉬의 대답.