![재귀적으로 파일을 찾아 하나의 파일로 연결하고 동시에 원본 파일을 삭제하는 방법](https://linux55.com/image/161879/%EC%9E%AC%EA%B7%80%EC%A0%81%EC%9C%BC%EB%A1%9C%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%B0%BE%EC%95%84%20%ED%95%98%EB%82%98%EC%9D%98%20%ED%8C%8C%EC%9D%BC%EB%A1%9C%20%EC%97%B0%EA%B2%B0%ED%95%98%EA%B3%A0%20%EB%8F%99%EC%8B%9C%EC%97%90%20%EC%9B%90%EB%B3%B8%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%82%AD%EC%A0%9C%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
내가 이해하는 한 나는 사용할 수 있다
find . -name '*.txt' -exec cat {} \; > all.txt
디렉터리의 모든 텍스트 파일(하위 디렉터리를 반복적으로 탐색)을 이라는 파일로 연결합니다 . 문제는 원본 파일을 저장할 all.txt
저장 공간이 충분하지 않다는 것입니다 . all.txt
원본 파일을 연결한 후 삭제할 수 있도록 두 명령을 차례로 실행하는 방법이 있습니까 all.txt
?
답변1
가장 일반적인 접근 방식은 다음 주소로 전송되는 간단한 한 줄 셸 명령을 작성하는 것입니다 find
.
find . -name "*.txt" -exec sh -c 'cat {} >> foobar && rm {}'
참고 사항: glob이 *.txt
출력 파일 과 일치하지 않습니다. all.txt
추가한 파일(제 경우)이 glob과 일치하지 않으면 foobar
극단적인 경우를 피할 수 있습니다 . 나중에 -name
이름을 바꾸세요 foobar
.