LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1447|回复: 8

如何使用实现指定目录下文件夹的遍历与排序??

[复制链接]
发表于 2007-1-10 16:07:55 | 显示全部楼层 |阅读模式
比如在一个指定目录下存在20060101.tar和20060102.tar,如何实现按顺序解压这两个包?即先解20060101再解20060102??
发表于 2007-1-10 22:13:54 | 显示全部楼层
for (( i=20060101; i<=20060102; i++))
do
tar xf $i.tar
done
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-11 08:12:20 | 显示全部楼层
指定目录下的文件夹名称事先并不清楚,需要遍历后才可以排序,楼上的太简单了。也许存在20050102、20060405,事先并不清楚。
回复 支持 反对

使用道具 举报

发表于 2007-1-11 10:08:10 | 显示全部楼层
  1. #!/bin/bash
  2. touch sorttar.temp
  3. for files in `ls $1/*.tar`;do
  4.         files=`basename $files`
  5.         echo ${files%\.tar} >> sorttar.temp
  6. done
  7. for files in `sort -g sorttar.temp`;do
  8.         tar -xvf ${files}.tar
  9. done
  10. rm sorttar.temp
复制代码
回复 支持 反对

使用道具 举报

发表于 2007-1-15 13:32:41 | 显示全部楼层
find ./ -name *.rar | xargs -exec tar zxvf {} \;
回复 支持 反对

使用道具 举报

发表于 2007-1-15 13:34:33 | 显示全部楼层
find ./ -name *.rar | xargs -exec tar zxvf {} \;
linux 倡导简洁高效, 凡事尽量用简单的方式去处理。除find以外,你也可以用ls和xarg来完成同样的任务。 当然还可以用tree命令来搞定。
回复 支持 反对

使用道具 举报

发表于 2007-1-15 13:44:27 | 显示全部楼层
你的脚本没有排序过程,默认的排序是按照字典顺序的,而不是按照数值的顺序
比如
11111 12按照字典顺序
12 11111按照数值顺序
回复 支持 反对

使用道具 举报

发表于 2007-1-15 14:39:34 | 显示全部楼层
加一个sort的管道过滤好了,呵呵sort默认按字典排序。 加上-n参数按数字排序
回复 支持 反对

使用道具 举报

发表于 2007-1-15 15:16:11 | 显示全部楼层
sort -n 排序,需要取出文件名里面的数字,如果一行想搞定的可能需要用awk巴
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表