我有一个包含 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 中只有一个文件,您可以省略压缩文件的名称:
$ 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
目录必须事先存在)。