《Disney +》 迪士尼、Marvel、彼思、星球大戰…  九月份PlayStation Plus遊戲:《Overcooked: All You Can Eat!》《Hitman 2》、《Predator: Hunting Grounds》   「CAPCOM Pro Tour Online 2021」首場比賽於4月17日日本登場!   大逃殺手遊「FINAL FANTASY VII THE FIRST SOLDIER」事前登錄人數突破100萬!   職棒野球魂最新作《eBASEBALL職棒野球魂2021 大滿貫》於2021年夏季Nintendo Switch上發售!   追加《真・女神転生if…》!「Family Computer &Super Famicom Nintendo Switch Online」7月新增遊戲發表!   《魔物獵人崛起》免費大型更新「Ver.3.0」發布!追加新魔物&新結局!   美到令人屏息的畫面表現!「地平線 西方禁地」PS5 實機畫面曝光!   原神1.3版本更新:來海燈節一起歡度提瓦特的新年吧! 

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

隨機商業新聞

Addidas