0
我有一個很大的主目錄,其下有很多jar文件。我需要將我的主目錄中的jar文件中的所有txt文件的內容聚合到一個文本文件中。從jar中提取txt文件
有人可以幫助我嗎?我不知道如何爲此編寫腳本。我正在使用Linux系統。
總結一下,我需要:
- 查找所有jar文件
- 找到JAR文件中的所有TXT文件
- 獲取這些txt文件的內容到一個輸出文件
我有一個很大的主目錄,其下有很多jar文件。我需要將我的主目錄中的jar文件中的所有txt文件的內容聚合到一個文本文件中。從jar中提取txt文件
有人可以幫助我嗎?我不知道如何爲此編寫腳本。我正在使用Linux系統。
總結一下,我需要:
如果我們在文件名中省略了適當的空格處理,它歸結爲:
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
Here是jar
描述。
我不知道「把它們寫入一個普通的txt文件」是什麼意思。但請注意,.jar文件只是帶有一些額外元數據約定的.zip文件(以及一些其他差異,如您不必關心的形式化的一組壓縮算法)。你可以用一個簡單的「解壓縮」解壓縮它們,然後直接在文件樹上操作,這可能會更簡單。 –