用一个命令解压缩并重命名文件

用一个命令解压缩并重命名文件

我有一个包含 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目录必须事先存在)。

相关内容