《Disney +》 迪士尼、Marvel、彼思、星球大戰…  JBL續約「FAV gaming」!新隊服與續簽背景公開!   《漫威星際異攻隊》服裝包羅萬象,新穎和經典齊備   離發售還有兩星期!「真・女神轉生V」最新PV公開遊戲內容!   電競版除菌除臭噴霧 「衣物及家居香薰噴霧 Saiga NAK Special Edition」使用評測   「ROG Phone 5」即將登陸日本!?ASUS 華碩最新電競手機預告網頁上線!   聚集香港所有《街霸V》精英!「TOROS powered by Red Bull -STREET FIGHTERV 冠軍版」香港比賽日程確定!   發售後立即售罄!?「PUMA x 集合啦!動物森友會」系列現已在日本發售!   電玩銀行!?於日本Sony銀行開設帳戶就有機會得到「PlayStation 5」! 

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