背景:
需要批量把hdfs上某個目錄中的所有以.pending 結尾的檔案,去掉.pending字尾。主要原因是建立的hive外表無法讀取.tmp或.pending的檔案,所以需要去掉字尾。
hdfs上檔案的結構是根目錄/data/test/flink/ttengine_predict/下有dt=2017-12-28的天級目錄,在天級目錄下會有hour=00-23的24個小時級目錄,檔案都在小時級目錄中。
#!/bin/bash
#print the directory and file
hadoop fs -ls /data/abc/flink/ttengine_predict/dt=2017-12-27/ | awk '' > files0.txt
#迴圈遍歷,提取所需資料
cat ./files0.txt | while read line
do echo "$line"
hadoop fs -ls $line | awk '' > files1.txt
cat ./files1.txt | while read fname
do echo "$fname"
_path=`echo $fname | awk -f'.' ''`
hadoop fs -mv $fname $_path
#echo $_path
done
done
shell遍歷hdfs上的檔案目錄
背景 需要批量把hdfs上某個目錄中的所有以.pending 結尾的檔案,去掉.pending字尾。主要原因是建立的hive外表無法讀取.tmp或.pending的檔案,所以需要去掉字尾。hdfs上檔案的結構是根目錄 data test flink ttengine predict 下有dt 201...
Shell 檢查HDfS檔案
tip 假設要檢查的路徑為check path bytes獲取檔案大小,單位為位元組 base為轉換單位的基準,我這裡取1g,所以是1x1024x1024x1024bytes,其他單位轉換同理 第三步real只需要做除法即可,bc是shell自帶運算處理,這裡做2位小數保留,其餘同理 獲取大小 by...
shell遍歷檔案
有時候要對某個資料夾下面的所有檔案做同樣的處理,比如對每個檔案統計行數,這時用遍歷檔案的方式就很簡單了。for i in ls do wc l i done 55552 f123.txt 55819 f124.txt 56118 f125.txt 56404 f126.txt 56633 f127....