2017-12-15 34 views
0

다음 명령을 실행합니다. find. -type f -name "* .xml"-mtime +30 | wc -l - 현재 디렉토리에 X보다 오래된 파일이 몇 개 있는지 알고 싶습니다.tar 아카이브는 find 명령의 결과보다 적은 파일을 포함합니다.

이제 위의 명령을 사용하여 아카이브를 만들 때 더럽 히고 싶습니다. | xargs를 타르 -czvf archive_name.tar - 모든 것이 좋아 보이지만 ..

가 지금은 그래서 또 다른 명령을 실행 최종 아카이브에 얼마나 많은 파일을 알고 싶어 타르 -tvf archive_name.tar을 | wc -l - 약 2K이 나옵니다.

문제는 먼저 을 찾으면 6K 개의 파일이 반환됩니다.

어떻게 될 수 있습니까? (현재 디렉토리에는 다른 디렉토리가 없습니다). xargs를 그들 모두를 처리하기 위해 타르를 여러 번 실행해야하므로

감사 프로세스의

답변

0

인수 목록은 무한 크기가 아닙니다. 그래서 실행 동등한 것 :

tar -czvf archive_name.tar 1.xml 2.xml ... 
tar -czvf archive_name.tar a.xml b.xml ... 
tar -czvf archive_name.tar za.xml zb.xml ... 

타르의 마지막 인스턴스는 파일을 덮어 쓰게됩니다.

당신은 아카이브 (스위치 R)에 추가하는 대신 작성하여이를 극복 할 수

는 비 압축 아카이브를 생성하는
find . -type f -name "*.xml" -mtime +30 | xargs tar rvf archive_name.tar 

주, 당신은 GZIP 또는 무엇 이건 나중에 그것을 압축 할 수 있습니다.

+0

Hi Fat-Zer, xargs가 tar 명령을 3 번 실행한다고 가정 해 봅시다. 아카이브에 약 6K 개의 파일이 있어야합니다. 그렇지 않으면이 6K에서 2K 만 타르를 수 있습니까? –

+0

@AbbyLockhart, 실제로는 아니지만 마지막으로 tar을 실행하면 아카이브를 덮어 씁니다. [대답에 추가] –

+0

좋아, 설명 주셔서 감사합니다. 문안 인사, –