Eu tenho um arquivo zip que contém um CSV e gostaria de descompactá-lo em uma pasta específica e renomear o arquivo com o mesmo nome do arquivo zip. Por exemplo.,
Eu tenho um arquivo zip chamado: youtube_videos.csv.zip e gostaria de descompactá-lo em uma determinada pasta chamada target e renomear o arquivo nessa pasta para youtube-videos.csv. Eu tenho, mas em duas linhas como abaixo:
unzip datasets/youtube_videos.csv.zip -d target
mv target/videos_data.csv target/youtube_videos.csv
Existe um forro que poderia ser usado?
Responder1
Aqui está uma opção de um liner, mas ela não renomeia o arquivo, ela envia seu conteúdo para stdout. Talvez também não possa ser usado com a -d
opção (não consigo fazer funcionar):
$ unzip -p datasets/youtube_videos.csv.zip videos_data.csv > target/youtube_videos.csv
Ou se houver apenas um arquivo dentro do zip, você pode omitir o nome dos arquivos compactados:
$ unzip -p datasets/youtube_videos.csv.zip > target/youtube_videos.csv
A opção -p
faz, de acordo com o manual:
-p
extrair arquivos para pipe (stdout). Nada além dos dados do arquivo é enviado para stdout, e os arquivos são sempre extraídos em formato binário, assim como são armazenados (sem conversões).
Responder2
Com libarchive bsdtar
:
bsdtar -xvvf youtube_videos.csv.zip -C target -'s/videos_data/youtube_videos/g'
Extrairia o arquivo para o target
diretório videos_data
s
substituído pelo youtube_videos
nome dos membros do arquivo.
(observe que o target
diretório deve existir previamente).