하나의 명령으로 파일의 압축을 풀고 이름을 바꿉니다.

하나의 명령으로 파일의 압축을 풀고 이름을 바꿉니다.

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

이는 한 줄 옵션이지만 파일 이름을 바꾸지는 않지만 해당 내용을 표준 출력으로 인쇄합니다. 이 옵션에서는 작동 하지 않을 수도 있습니다 -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 s아카이브 구성원의 이름으로 대체됩니다.youtube_videos

(이 target디렉터리는 미리 존재해야 합니다.)

관련 정보