--xform
인수는 임의의 수의 소요 sed
매우 강력 대체 식을. 귀하의 경우 마지막까지 모든 것과 일치하는 패턴을 사용하고 /
아무것도 바꾸지 마십시오 .
tar cvf allfiles.tar --xform='s|.*/||' $(<mylist.txt)
--show-transformed-names
새 이름을 보려면 추가 하십시오.
당신이 파일이있는 경우 참고,이 치환은, 예를 들어, 그래서 모든 파일 이름, 명령 행에서 주어진뿐만 아니라 그 적용 /a/b/c
하고 목록 단지 지정을 /a
한 후 최종 파일 이름이 그냥, c
하지 b/c
. 예를 들어 귀하의 경우와 같이 항상 더 명시적이고 정확한 대체 목록을 제공 할 수 있습니다.
--xform='s|^tmp/path2/||;s|^tmp/||;s|^path3/||'
이니셜 /
은 tar (를 사용하지 않는 한)에 의해 제거 -P
되므로 위의 표현식에는 이니셜 이 없습니다. 또한 가장 긴 일치가 먼저 수행되도록 디렉토리 목록을 정렬해야합니다. 그렇지 않으면 이미 제거 된 tmp/path2/
것과 일치하지 않습니다 tmp/
. 그러나 다음과 같이이 목록의 생성을 자동화 할 수 있습니다.
--xform="$(sed <mylist.txt 's|[^/]*$||; s|^/||; s:.*:s|^&||;:' | sort | tr -d '\n')"
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다