[求助]列表中某一列的值获取

yuuon 2012-12-30 09:42:36
这个是我的LINUX作业,嗯,第一题就卡住了

要求是做一个脚本文件,比如:$scirpt1.sh [-o] a.jpg b.jpg c.jpg ...
结果是要显示一个列表,格式是“文件名 创建时间”,其中创建时间如上图是通过exif2软件包截取TAG获得的
参数-o加上的话,就是将列表按时间顺序排序。

问题比较多
1.就是参数-o的写法,是不是检测$1然后shift?因为就这一个参数设置所以可以的话不用getopt

2.关于上图的那个列表,很不幸的是,没法用cut简单分类,因为分隔符并不是TAB,而是空格,更糟的是,文件名中有空格的话,根本就起不到作用。有人说可以用awk但是那个不会用。还有一点,第二题是跟第一题有关的,要求是把文件名给改成文件.时间.后缀这么一个格式,即例如:a.jpg就改成a.yyyy-mm-jj_hh.mm.ss.jpg这么一个样式,所以尽可能的话,果然还是希望把文件名和创建时间作为数值取出来。但是方法一时想不到。

3.最后就是脚本写出来后是$2$3$4这样一个一个轮流处理还是有一次性解决的方法?目前我构思的框架就是只能一个一个处理,但是这样要排序的话是不是只能先生成一个临时文本,再对文本内容进行排序?有没有其他思路?

请高手指点,谢谢。
...全文
138 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fyz_Winnie 2013-01-03
  • 打赏
  • 举报
回复
命令是以“.JPG” 作为分隔符的,如果有“.JPG.JPG" 类似的文件名的话那就只能考虑其它方法了
ljc007 2012-12-31
  • 打赏
  • 举报
回复
[quote=引用 2 楼 zhangtie8527 的回复:] 如果输出的文件名固定为“JPG”作为后缀的话 文件名 的获取可以考虑用“JPG”作为分隔符; /quote] 有没有测试过这样的文件名: JPG.JPG
fyz_Winnie 2012-12-31
  • 打赏
  • 举报
回复
如果输出的文件名固定为“JPG”作为后缀的话 文件名 的获取可以考虑用“JPG”作为分隔符;
时间的获取 考虑用空格分隔,取最后2个字段;
至于“-o”自己在脚本前面加判断然后配合排序就行了。

awk命令如下:
awk -F ".JPG" '{num=split($0,A," "); gsub(":",".",A[num-1]);gsub(":",".",A[num]);print $1"."A[num-1]"_"A[num]".jpg"}'

#由于没有lz的环境,自己造了一个测试文件,里面的内容跟lz的输出类似
cat test.txt
a1.JPG exif Ascii 20 2012:10:28 09:26:32
a2.JPG exif Ascii 20 2012:11:20 03:26:32
a3 xy.JPG exif Ascii 20 2012:10:28 10:26:32
a4.JPG exif Ascii 20 2012:10:23 09:26:32
a5 aa.JPG exif Ascii 20 2012:10:28 09:26:35

#替换后的文件名
awk -F ".JPG" '{num=split($0,A," "); gsub(":",".",A[num-1]);gsub(":",".",A[num]); print $1"."A[num-1]"_"A[num]".jpg"}' test.txt
a1.2012.10.28_09.26.32.jpg
a2.2012.11.20_03.26.32.jpg
a3 xy.2012.10.28_10.26.32.jpg
a4.2012.10.23_09.26.32.jpg
a5 aa.2012.10.28_09.26.35.jpg
ljc007 2012-12-31
  • 打赏
  • 举报
回复
引用
1.就是参数-o的写法,是不是检测$1然后shift?因为就这一个参数设置所以可以的话不用getopt
条条大路通罗马。能实现功能就行。

19,612

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧