GlareVPN使用日本在地伺服器‧日本本地IP位址,述不能訪問日本國內網站的情形將通通消失。  《原神》2.4版本更新:盛大的慶典與神秘的地區將在提瓦特的新年之際到來!   11月26日黑色星期五!NOOK商店大特價!   名古屋也有電競旅館!?「GOLD STAY 名古屋 栄」電競專用三人高級客房登場!   歷經34年再度復活!紅白機名作ARPG「月風魔傳」將推出續作「月風魔傳:不朽之月」!   單是會發光已經夠帥了!Razer電競智能口罩「PROJECT HAZEL」面世!   「明星大亂鬥特別版 最後之特別番組」就是「索拉的使用方法」!發表內容總結!   多多自走棋全新版本 9月23日重磅上線   《Two Point Hospital: Jumbo Edition》從醫院送上一劑荒謬良方 

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

隨機商業新聞

PureVPN