从jar中提取txt文件

时间:2012-09-04 17:23:33

标签: linux bash jar

我有一个很大的主目录,下面有很多jar文件。我需要将主目录中jar文件中所有txt文件的内容聚合到一个文本文件中。

有人可以帮我吗?我不知道如何为此编写脚本。我正在使用Linux系统。

总结一下,我需要:

  1. 查找所有jar文件
  2. 查找jar文件中的所有txt文件
  3. 将这些txt文件的内容放入单个输出文件

2 个答案:

答案 0 :(得分: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。示例标题:

Archive:  /home/username/filename.jar
  inflating: META-INF/maven/pom.xml

答案 1 :(得分: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

Herejar的描述性内容。