当前位置: 技术问答>linux和unix
一个简单的shell,文件名的比较
来源: 互联网 发布时间:2017-01-15
本文导语: 本帖最后由 louxuansky 于 2011-11-11 16:59:31 编辑 我这里有2个文件夹,里面有很多文件,a文件夹里的文件类型是20111111XXXXXX-00000000-XXXXXXX-XXXXXX.dat.Tdat,b文件夹的文件名是20111111XXXXXX-XXXXXXXX-XXXXXXX-00000000.Tdat,就是a文件夹中的第...
|
首先遍历目录a中的文件,将目录a中的所有文件以第二个字段为索引存储在一个数组中,然后再遍历目录b中的所有文件,以第四个字段为索引判断是否为空,若非空,即代表和目录a中的文件对应,然后分别打印出两个目录下的文件。
|
awk就可以,遍历文件1的时候存储一个数组a[第二个字段]=20111111XXXXXX-00000000-XXXXXXX-XXXXXX.dat.Tdat
遍历文件2的时候检查a[第4个字段]是否为空就可以了。
ARGIND The index in ARGV of the current file being processed.
这个变量会帮助你。
遍历文件2的时候检查a[第4个字段]是否为空就可以了。
ARGIND The index in ARGV of the current file being processed.
这个变量会帮助你。
owenliang@linux-7lsl:~/csdn/shell> ./file.sh file1 file2
20111111XXXXXX-00000000-XXXXXXX-XXXXXX.dat.Tdat 20111111XXXXXX-XXXXXXXX-XXXXXXX-00000000.Tdat
owenliang@linux-7lsl:~/csdn/shell> cat file.sh
#!/bin/bash
awk -F "-" 'ARGIND==1{ a[$2]=$0;} ARGIND==2{ str=gensub("([^.]*).Tdat","\1","g",$4); if(a[str]!=""){print a[str]"t"$0;} }' "$1" "$2"