我有很多壓縮文件,其中每個包含目錄中的json文件和txt文件。 我想查找目錄中所有壓縮文件中的json文件總數。Grep內部的多個目錄和壓縮文件
要深入研究,我有很多這樣的目錄。
如何查找所有目錄中所有壓縮文件中的json文件總數?
我有很多壓縮文件,其中每個包含目錄中的json文件和txt文件。 我想查找目錄中所有壓縮文件中的json文件總數。Grep內部的多個目錄和壓縮文件
要深入研究,我有很多這樣的目錄。
如何查找所有目錄中所有壓縮文件中的json文件總數?
通過find
命令,您可以輕鬆遍歷每個您擁有的目錄,並與指定模式(如*.zip
)匹配。
當你去通過列表find
回報(一for
循環會在這裏好),你需要列出每個存檔文件(你會不會以解壓縮文件,這是好的),而你'列出文件,你可以做一個簡單的grep
找到.json
模式和管道輸出到wc -l
這將給你一個「行數」 - 在這種情況下,它將代表.json
文件的數量。
在整個每次迭代過程中,您都需要計算這個數量並將其添加到「總數」計數中,然後您可以稍後輸出。
一個擴大的這個樣本是:
total=0;
for file in `find . -name '*.zip'`; do
count=`unzip -l $file | grep '.json' | wc -l`;
total=`expr $total + $count`;
done;
echo "Total Json Files: $total";
此示例假設您正在使用zip
你的文件存檔。如果您使用tar
之類的東西,則需要使用其文件列表參數(tar -t
)。
zgrep的工作方式像grep,但處理zip文件。在linux上它是一個shell包裝器,在bsd和osx上它是一個二進制文件。
這隻適用於使用gzip和ncompress(或類似的)創建的文件,而不是實際的ZIP文件。 – 2013-07-18 04:34:09
甚至更糟糕的是,zgrep可能*看起來可以工作,但在這種情況下,它只會在每個zip壓縮文件的一個文件中grep。當我嘗試在每個zip文件中使用多個文件進行grep時,我感到非常困惑。 – Mikkel 2015-09-09 07:02:22
像這樣的東西可能會工作:找到。 -name'* .zip'| unzip -l | grep「.json」| wc -l – 2013-05-02 19:56:08
有沒有一種方法可以在沒有unzippig的情況下完成? – user1189851 2013-05-02 20:12:11
@ user1189851'unzip -l'僅打印存檔中包含的文件的名稱。不,如果不解壓縮至少這麼多,你就無法做到。 – Kevin 2013-05-02 20:18:53