久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

SHELL編程實現(xiàn)批量Netatalk字符集文件名替換

 krrish 2010-08-05
 
 
    前一段時間遇到一個批量修改文件名的,,是一臺debian文件服務器,為mac提供文件共享服務,,其中的漢字部分采用編碼方式(查了下資料,,應該是的,沒有去實際驗證),,具體的編碼原則如下:
    一個存儲于linux服務器中的字符名稱為Product_List:b2:fa:c6:b7:c4:bf:c2:bc,,編碼方式為CP936,但已經(jīng)不會有中文了,。編碼的轉(zhuǎn)換方式為:后面的兩位字符就是對應CP936字符集的一個字符(半個漢字)的HEX內(nèi)碼,,如上面文件名轉(zhuǎn)換后應該為:Product_List產(chǎn)品目錄,見下面轉(zhuǎn)換方式,。
 
                                    內(nèi)碼                                           GB2312
 
00000000   B2 FA C6 B7 C4 BF C2 BC   產(chǎn)品目錄
00000008   00 00 00 00 00 00 00 00   ........
 
  本案例中因存儲結構變更,,需要重新整理,同時原先的MAC平臺及DEBIAN平臺均已報廢多久(這部分數(shù)據(jù)是存檔數(shù)據(jù)),,所以需要有一種手段將文件名稱轉(zhuǎn)換為正常的字符集,。
  我的思路是:先用find查找所有的含":"的文件或目錄名稱,再用mv將文件名中的":"批量替換為"%",最后通過convmv將字符轉(zhuǎn)換為正常的CP936編碼字,。
  因最近整理資料時發(fā)現(xiàn)這個案例,,很郁悶的是,最終的程序方案已經(jīng)早被我刪除了,無法恢復出來了(虧了我這個數(shù)據(jù)恢復專家的名頭了,,呵呵),。只找到個草稿,先記下來,,以后遇到類似情況待查,。如果有更好的建議、意見,,留言給我,。
   假設生成的sh文件名為t.sh,內(nèi)容大致為:
 
   echo >/testsh/t1.sh
   echo >/testsh/t2.sh
   find $1 -depth -type $2 -name "*\:*" -exec $3 {} \;|while read -r linet
   do
   line="`echo "$linet"|sed -e 's#)#\\\\)#g' -e 's/(/\\\\(/g' -e 's/&/\\\\&/g' -e 's/:/\\\\:/g' -e "s/'/\\\\\'/g"`"
   echo "mv "$line"  "`echo "$line"|sed -e 's/\:/%/g' -e 's/\^M//g'`"   ;" >>/testsh/t1.sh
   echo "convmv --notest --unescape "`echo "$line"|sed 's/\:/%/g'`" ;" >>/testsh/t2.sh
   done
   chmod +x /testsh/t1.sh
   /testsh/t1.sh
   chmod +x /testsh/t2.sh
   /testsh/t2.sh
 
 
  執(zhí)行上面的sh 后,,會生成t1.sh與t2.sh,,先不斷的執(zhí)行“t.sh  /data_dir d echo”,等全部執(zhí)行完成后,,再執(zhí)行“t.sh  /data_dir f echo”,。
 
    記得直正解決問題時,修正了好多問題,,現(xiàn)在也想不太起來了,,但思路還是可行的。暫時就這樣記錄吧,。
       

    本站是提供個人知識管理的網(wǎng)絡存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導購買等信息,謹防詐騙,。如發(fā)現(xiàn)有害或侵權內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多