
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)