하위 디렉터리의 텍스트 파일에서 파일 목록을 찾아 tarball에 넣으시겠습니까?

하위 디렉터리의 텍스트 파일에서 파일 목록을 찾아 tarball에 넣으시겠습니까?

tar에 필요한 파일 목록이 있습니다. 일반적으로 나는

tar -cvf allfiles.tar -T mylist.txt

하지만 필요한 파일이 하위 디렉터리에 분산되어 있고 내 목록에는 경로가 아닌 파일 이름만 있다는 것을 발견했습니다.

"find"와 tar 명령을 결합하여 파일이 하위 디렉터리에 있는 내 목록의 파일을 찾을 수 있는 방법이 있습니까?

답변1

이름 및 목록을 사용하여 경로를 찾을 수 있지만 find다른 디렉터리에 동일한 이름을 가진 파일이 있는 경우 약간의 특수한 경우가 발생할 수 있습니다.

실제로 중요하지 않은 경우 다음을 수행할 수 있습니다.

find <main_directory> | grep -f mylist.txt

그런 다음 목록을 tar명령에 사용하십시오. 전체 명령은 다음과 같습니다.

tar cvf allfiles.tar -T <(find <main_directory> |
    grep -f mylist.txt --color=never)

당신을 주목하세요~ 해야 하다을 사용하십시오 --color=never. 그렇지 않으면 grep에 대해 색상이 활성화된 경우 에 대해 잘못된 입력을 보내게 됩니다 tar.

대소문자 구분을 무시하려면 이 경우 grep실제로는 in 입니다.필터링파일에 간단히 플래그를 추가하면 됩니다 -i.

tar cvf allfiles.tar -T <(find <main_directory> |
    grep -i -f mylist.txt --color=never)

관련 정보