`tar` 및 `find`를 사용하여 원본 파일 확장자를 제거합니다.

`tar` 및 `find`를 사용하여 원본 파일 확장자를 제거합니다.

tb2이와 같은 텍스트 파일 묶음으로 파일을 만들고 싶습니다 .tar cfj $(basename ./2014_04_09.txt .txt).tb2 $(basename ./2014_04_09.txt)

2014_04_09.tb2이 명령을 사용하면 디렉터리 없이 아카이브 파일을 만들 수 있습니다.

-exec하지만 이와 같은 옵션을 사용하여 명령을 적용하면find

find . -name "*.txt" -exec tar cfj $(basename "{}" .txt).tb2 $(basename "{}") \;

이 명령은 원래 확장자( 2014_04_09.txt.tb2)와 아카이브 내의 디렉터리를 가진 아카이브 파일을 생성합니다.

단일 파일만 적용할 때 tar와 같이 명령을 사용하는 방법 .find

답변1

-exec쉘 명령을 사용해야 합니다 :

find . -name "*.txt" -exec sh -c 'tar cfj $(basename "{}" .txt).tb2 "{}"' -- {} \;

또한 귀하의 find명령은 다음과 같습니다.발견하다모든 수준의 문서. 따라서 basename현재 디렉터리에 파일이 없으면 전달된 파일 목록을 사용할 수 없습니다.

상세 설명,

tar cfj foo.tb2 foo.txt

foo.txt현재 디렉터리에 없으면 오류가 발생합니다. 따라서 경로를 에 전달해야 합니다 foo.txt.

관련 정보