《Disney +》 迪士尼、Marvel、彼思、星球大戰…  日本知名足球選手三浦知良與世界足球競賽締結夥伴契約!「KING KAZU」將於世界足球競賽中登場!   『Virtua Fighter 5 Ultimate Showdown』的追加下載內容「人中之龍」系列合作包登場!   單是會發光已經夠帥了!Razer電競智能口罩「PROJECT HAZEL」面世!   「被囚禁的帕爾馬」系列將於情人節促銷活動中最大51%OFF折扣!   「超級機器人大戰30」第三彈預告片 & DLC②參戰作品發表!ULTRAMAN於超機戰中登場!   在米德加進行大逃殺!?「FINAL FANTASY VII THE FIRST SOLDIER」預計於2021年推出!   《零 ~濡鴉之巫女~》重製版登場!官網、PV&初回特典情報公開!   今日在《Destruction AllStars》首個上市後賽季重返競技場 

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