《Disney +》 迪士尼、Marvel、彼思、星球大戰…  電子遊戲市場背後的雲端   「Resident Evil SHOWCASE|April 2021」釋出惡靈古堡8:村莊最新宣傳影片以及體驗版情報!   SNK TGS2021 Online特設網站公開!這次主角是KOF XV!   日本最大數位教育中心「REDEE」開設體驗VR的HTC「VIVE」專區!   《Returnal》戰鬥細節介紹:可升級武器、異世界工具和具有風險的收集品   參加《黑色行動冷戰》殭屍模式免費遊玩週,探索殭屍模式的全新章節   《State of Play》將於2月26日本週五精彩回歸   光榮再次和薩州濱田屋傳兵衛合作!正統芋燒酒「薩州 三國志 ~絕影~」發售! 

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

隨機商業新聞

Disney Plus