0

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

有人可以帮我弄这个吗?我不知道如何为此编写脚本。我正在使用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从最里面的循环中省略。一个示例标题:

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 回答