《Disney +》 迪士尼、Marvel、彼思、星球大戰…  SEGA與LEGO首度聯乘!「刺猬索尼克」的「碧綠丘陵地帶」將於LEGO裡重現!   日本最大規模線下VALORANT活動!OSAKA VALORANT FES大阪現場報告!   看《NieR Replicant ver.1.22474487139…》如何改編〈小美人魚〉篇章   在《漫威復仇者聯盟》中創造瓦干達的世界   原神2.1版本更新:在提瓦特世界和亞蘿伊一起狩獵吧!   「Indie World 2021.12.16」 發表內容總結!   Wellplayed Rizest 的控股公司 Kayac 宣布將投資東南亞具代表性的電競公司「Tier One Entertainment」並與之合作。   機戰30 DLC②發表!?「超級機器人大戰」舉行直播! 

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