我有一个很大的主目录,下面有很多 jar 文件。我需要将我的主目录中的 jar 文件中的所有 txt 文件的内容聚合到一个文本文件中。
有人可以帮我弄这个吗?我不知道如何为此编写脚本。我正在使用Linux系统。
回顾一下,我需要:
- 查找所有jar文件
- 查找jar文件中的所有txt文件
- 将这些 txt 文件的内容获取到单个输出文件中
如果我们在文件名中省略适当的空格处理,它可以归结为:
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
我大概会使用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
。