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
s
youtube_videos
( target
디렉토리가 미리 존재해야 합니다.)