0

次のようにプロパティファイルを作成しました。

appl.properties

directory=/tmp/samplescript

ZipFileName=FileN

Namese=Text1.doc Text2.doc

次のようなシェルスクリプトがあります。

# 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}

私が言及したディレクトリと、言及されたファイルの名前を見つけて、指定したファイルを同じディレクトリ/別のディレクトリに圧縮したい

4

1 に答える 1

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。それが質問が求めていたものだと思います。

于 2013-10-04T14:47:03.430 に答える