我有一个很大的主目录,下面有很多jar文件。我需要将主目录中jar文件中所有txt文件的内容聚合到一个文本文件中。
有人可以帮我吗?我不知道如何为此编写脚本。我正在使用Linux系统。
总结一下,我需要:
答案 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
Here是jar
的描述性内容。