《Disney +》 迪士尼、Marvel、彼思、星球大戰…  了解《Star Trek Online》如何重建克林貢帝國   《Axiom Verge 2》:讓遊戲公式重新洗牌   人氣實況主「加藤 純一」發表結婚計劃   PS4™『Virtua Fighter 5 Ultimate Showdown』於今日在PS Plus每月遊戲上推出!帶來嶄新視覺圖像與功能的最新作!   日本Amazon Black Friday優惠!Fire HD和Fire TV系列最多減價14,000日圓!   《Five Nights at Freddy’s: Security Breach》首支實機遊玩影片公開   G-GEAR與MSI共同開發的電競PC「G-GEAR Powered by MSI」新型號發售   在新的一年裡暢玩PS吧!PS Store「春季優惠」最低2折! 

Bash 如何取得路徑內的所有檔名

商業

Linux Bash shell programming 想要取得目錄下的檔名,然後一個一個印出來,一個一個做需要的處理,要怎麼寫呢?

Bash 如何取得路徑內的所有檔名

要將目錄內的檔案,一個一個丟進變數 $filename 裡面,前面可以使用 for、ls 或 find 來送檔名,後面使用 while + read 來接收讀取。

範例可見

  • 印出此目錄下的檔名
    • for filename in .csv; do echo $filename; done
    • ls | while read -r filename; do echo $filename; done
    • ls *.pdf | while read -r filename; do echo $filename; done
  • 印出此路徑下所有符合檔名規則的檔案
    • find ./ -name '*.csv' -print0 | while read -d '' -r filename; do echo "$filename"; done
    • find ./*.pdf -print0 | while read -d '' -r filename; do echo $filename; done
  • 此路靜下符合規則的檔案,在另外做進階的處理 (iconv 將 big5 轉成 utf-8)
    • find ./ -name '*.csv' -print0 | while read -d '' -r filename; do iconv -f big5 -t utf-8 "$filename"; done
  • 若想要 pipe 接著處理,轉檔完後,再印出此檔案前兩行
    • find ./ -name '*.csv' -print0 | while read -d '' -r filename; do iconv -f big5 -t utf-8 "$filename" | head -2; done
Tsung

隨機商業新聞

Gearbest 購物平台