하나의 명령으로 파일 압축 풀기 및 이름 바꾸기

하나의 명령으로 파일 압축 풀기 및 이름 바꾸기

CSV가 포함된 zip 파일이 있는데 특정 폴더에 압축을 풀고 파일 이름을 zip 파일 이름과 동일하게 바꾸고 싶습니다. 예를 들어.,

youtube_videos.csv.zip이라는 zip 파일이 있는데 target이라는 특정 폴더에 압축을 풀고 해당 폴더의 파일 이름을 youtube-videos.csv로 바꾸고 싶습니다. 가지고 있지만 아래와 같이 두 줄로 되어 있습니다.

unzip datasets/youtube_videos.csv.zip -d target 
mv target/videos_data.csv target/youtube_videos.csv

사용할 수 있는 라이너가 하나 있습니까?

답변1

다음은 하나의 라이너 옵션이지만 파일 이름을 바꾸지 않고 해당 내용을 stdout으로 출력합니다. 또한 옵션과 함께 사용할 수 없을 수도 있습니다 -d(작동시킬 수 없습니다).

$ unzip -p datasets/youtube_videos.csv.zip videos_data.csv > target/youtube_videos.csv

또는 zip 안에 파일이 하나만 있는 경우 zip 파일 이름을 생략할 수 있습니다.

$ unzip -p datasets/youtube_videos.csv.zip > target/youtube_videos.csv

-p설명서에 따르면 옵션은 다음과 같습니다.

-p 파이프(stdout)로 파일을 추출합니다. 파일 데이터 외에는 아무것도 stdout으로 전송되지 않으며 파일은 저장된 것처럼 항상 바이너리 형식으로 추출됩니다(변환 없음).

답변2

libarchive 사용 bsdtar:

bsdtar -xvvf youtube_videos.csv.zip -C target -'s/videos_data/youtube_videos/g'

아카이브 구성원의 이름으로 대체된 target디렉토리 에 아카이브를 추출합니다 .videos_data syoutube_videos

( target디렉토리가 미리 존재해야 합니다.)

관련 정보