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
.