2014-09-23 58 views
-2

我想制作一个unix脚本,其中搜索文件名称在不同的路径中,如果找到,请将该名称保存在另一个文本文件中。我想搜索不同路径中的文件并在另一个txt文件中创建列表UNIX

我想在不同的路径中创建一个类似文件名的列表,并将该列表保存在另一个文本文件中。

当找到类似的文件名时,我的列表应该追加所有名字。

例如, path1 has A B C D files and path2 has A E F D files

当通过文件名搜索这里A AND D是在两个然后在另一个文本文件列表中的类似文件应保存。

这里A D应该在另一个txt文件

请帮

我已经脚本按照帮助我得到了,但它给人意外的标记“(”

#!/bin/sh 

export file1=/home/ay/object_list.txt 
export file2=/var/opt/cia/db_extract/object_list.txt 

comm -1 -2 <(sort ${file1})<(sort ${file2}) >searchlist.txt 

但正显示出意外的令牌 comm -1 -2 <(sort $ {file1})<(sort $ {file2})> searchlist.txt 运行正常如果我运行directlt请帮忙

+0

是否路径1和路径2共用一个父目录? – 2014-09-23 07:48:55

+0

没有不同的DIRECTORIES。 – Yushi 2014-09-23 08:20:50

回答

1

原来的答案

事情是这样的:

comm -1 -2 <(cd dir1 && find . -type f | sort) <(cd dir2 && find . -type f|sort) > file.txt 

这个工作原理如下。第一个<(...)中的内容会更改为您指定的第一个目录(dir1),并生成其中所有文件的列表,然后对其进行分类。第二个<(...)为第二个目录生成一个类似的列表。 comm命令然后比较这两个列表,并使用-1 -2打印第3列中的常用条目,禁止第1列和第2列。

更新在答复问题

如果你已经拥有了两个文件,你需要首先使comm工作正常进行排序。所以,说你有list1.txtlist2.txt,你可以这样做:

sort list1.txt > a.txt 
sort list2.txt > b.txt 
comm -1 -2 a.txt b.txt 

或者,下面是短:

comm -1 -2 <(sort list1.txt) <(sort list2.txt) 
+0

我已经有两个不同的文件列表,我想把常见的文件名取出到另一个文本文件 – Yushi 2014-09-23 08:39:57

+0

请看我更新的答案。 – 2014-09-23 08:45:54

+0

我已经脚本按照帮助我得到ü它给人意外的标记 '(' #!/ bin/sh的 出口文件1 = /家庭/ AY/object_list.txt 出口文件2 =在/ var /选择/ CIA /db_extract/object_list.txt comm -1 -2 <(sort $ {file1})<(sort $ {file2})> searchlist。TXT 但正显示出意外的标记 通讯-1 -2 <(排序$ {}的file1)<(排序$ {}文件2)> searchlist.txt 运行良好,如果我跑directlt请帮助 – Yushi 2014-09-23 10:32:00

相关问题