0

大きなホーム ディレクトリがあり、その下に多数の jar ファイルがあります。ホーム ディレクトリの jar ファイル内のすべての txt ファイルの内容を 1 つのテキスト ファイルに集約する必要があります。

誰かがこれで私を助けることができますか? このスクリプトの書き方がわかりません。Linux システムを使用しています。

要約すると、次のことが必要です。

  1. すべてのjarファイルを見つける
  2. jar ファイル内のすべての txt ファイルを検索します
  3. これらのtxtファイルの内容を単一の出力ファイルに取得します
4

2 に答える 2

4

ファイル名で適切な空白処理を省略すると、次のようになります。

searchdir='/home/username/'
outputtxt='/home/username/out.txt'

for jar in $(find "$searchdir" -iname '*.jar'); do
  for txt in $(unzip -l "$jar" | awk '/\.txt$/ {print $NF}'); do
    unzip -c "$jar" "$txt" | tail -n +3 >> "$outputtxt"
  done
done

| tail -n +3出力ファイルに unzip ヘッダーを含めたい場合は、最も内側のループを省略することもできます。ヘッダーの例:

Archive:  /home/username/filename.jar
  inflating: META-INF/maven/pom.xml
于 2012-09-04T19:10:13.400 に答える
0

私はおそらくjarそれを行うためにツールを使用します-

for jarfile in `ls -1 *.jar`
do
    txtfiles=`jar tf "$jarfile"|grep ".txt"`   #find all txt files in the jar
    for files in $txtfiles
    do
      jar xf "$jarfile" $file     #extract just the txt file
      if [ $? -eq 0 ]             #check if extract was successful
      then
        cat "$file" >> aggregate_file.txt  
        rm -rf "$file"             #clean up the un-jar
      else
        print "Cannot extract $file from $jarfile..."
      fi
    done
done

についての説明jarです。

于 2012-09-05T03:43:48.070 に答える