首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >7za重新归档

7za重新归档
EN

Unix & Linux用户
提问于 2019-11-18 17:53:38
回答 1查看 42关注 0票数 0

我有以下问题:我想编写一个bash脚本,它读取同一个文件夹中扩展名为.jpg的单个文件的名称,并将其用作存档名称。

代码语言:javascript
复制
/Sample.jpg
/Sample.7z <--

ls *jpg > OutputFileName
...
7za a Sample.7z ...

我怎样才能做到这一点?

EN

回答 1

Unix & Linux用户

发布于 2019-11-18 18:20:23

您可以使用简单的shell参数展开来解决这个问题--不需要bash特性:

代码语言:javascript
复制
#!/bin/sh

set -- *.jpg
if [ $# -ne 1 ] || [ "$1" = "*.jpg" ]
then
  echo "Error: there is not exactly one .jpg file here"
  exit 1
fi

7za a "${1%.jpg}".7z "$1" # ...

脚本将位置参数设置为扩展通配符*.jpg。如果没有这样一个这样的文件名,则退出时会出现一个错误。测试的后半部分针对的是通配符不匹配任何文件的情况(使用普通sh),因此仍未展开为文字"*.jpg“字符串。如果使用bash,则可以删除第二个检查,同时在shopt -s nullglob命令之前添加set,以便在展开过程中删除通配符(如果不匹配的话)。

一旦我们有了一个匹配的文件,调用7za并通过参数展开给出归档名称,这将去掉尾随的".jpg“,然后追加".7z”。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/552811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档