查找目录中的文件,并使用shell脚本将它们压缩到同一位置的一个位置

时间:2013-10-04 14:30:10

标签: file shell zip creation

我编写了一个属性文件,如下所示:

appl.properties

directory=/tmp/samplescript

ZipFileName=FileN

Namese=Text1.doc Text2.doc

我的shell脚本如下:

# source the properties:  
. appl.properties  

# Then reference then:  
echo $directory

#find ${directory}  zip -r ${ZipFileName} ${Namese} {}\;
#find $directory zip $ZipFileName $Namese {}\;

find $directory -type -f -execdir zip -j $ZipFileName {}\;

#zip -r ${directory} ${ZipFileName}

我想找到我提到的目录以及提到的文件的名称,并将我指定的文件压缩到同一目录/不同的目录中

1 个答案:

答案 0 :(得分:0)

我假设您只想压缩与$Namese中的姓名匹配的文件。在您的脚本中,尝试将find命令替换为:

export Namese

find $directory -type f -exec sh -c '[[ $Namese =~ (^| )`basename "$0"`($| ) ]] && zip -j -a `dirname $0`/$ZipFileName `basename $0`' {} \;

如果文件名在列出的sh中,则-exec中的zip将运行$Namese

这将查看$directory的每个子目录,如果在列表$Namese中找到任何名称的文件,则会将它们放入同一目录中的zip文件中并命名为zip文件$ZipFileName。我相信这就是问题所要求的。