解壓檔案和合併大量小檔案的shell指令碼

2021-08-19 07:09:44 字數 857 閱讀 5297

指令碼檔名為unzip-batch.sh

#批量解壓壓縮檔案,將檔案解壓到指定目錄

#!/bin/bash

for zipfilenamefull in `ls ./*.zip`

do #echo "$zipfilename"

zipfilename=`basename $zipfilenamefull`

filename=$(basename $zipfilename .zip)

echo "$filename"

unzip $zipfilename -d $filename

done

指令碼檔名為file-merge.sh

#先檢查是否存在txtfile目錄,若不存在,則建立

#由於當前目錄小檔案數目巨大,若用ls 命令時出現argument list too long錯誤

#所以利用find 命令,將當前小檔案合併成乙個大檔案 

#!/bin/bash

if [ ! -d txtfile ];then

mkdir txtfile

fifor catalognamefull in ` ls -l |grep '^d'|awk ''`

do #echo $catalognamefull

echo " find ./$catalognamefull -type f -name '*.txt' -exec cat {} \; >./txtfile/$catalognamefull.txt"

find ./$catalognamefull -type f -name '*.txt' -exec cat {} \; > ./txtfile/$catalognamefull.txt

done

hive小檔案合併機制 Hive小檔案合併遷移

1 需求 2 小檔案合併 我們通過sparksql進行小檔案合併,首先開啟spark shell申請足夠多的資源 spark shell master yarn driver memory 20g driver cores 4 executor cores 6 num executors 18 ex...

MapReduce大量小檔案問題

1.預設情況下,textinputformat對任務的切片機制是按檔案規劃切片,不管檔案多小,都會是乙個單獨的切片,都會交給maptaskz這樣,如果有大量小檔案,就會產生大量的maptask,處理效率及其低下 2.優化方法 最好的辦法 在資料處理系統的最前端 預處理 採集 就將小檔案合併成大檔案,...

快速刪除大量小檔案

由於bash會展開例如 rm aa 這樣的命令 如果後面的檔案太多就會報引數太長,所以有時候刪除大量小檔案就不適合用rm了 可以使用find先查詢在刪除 就不會出現上面那種報錯問題,可是還有乙個問題檔案太多的話 exec rm 完全沒有效率,一兩個小時估計也就只能刪除幾十萬的檔案 對於需要刪除百萬為...