![在終端機中列出不含副檔名的檔案名稱?](https://rvso.com/image/1449096/%E5%9C%A8%E7%B5%82%E7%AB%AF%E6%A9%9F%E4%B8%AD%E5%88%97%E5%87%BA%E4%B8%8D%E5%90%AB%E5%89%AF%E6%AA%94%E5%90%8D%E7%9A%84%E6%AA%94%E6%A1%88%E5%90%8D%E7%A8%B1%EF%BC%9F.png)
我正在使用 Mac。我需要獲取資料夾中的文件列表,但其副檔名不包含在列表中。這是因為我需要一個用於網站導入的產品列表,為了方便起見,圖像名稱與產品名稱相同。但是,我的清單不需要有擴展名。
我透過使用終端機獲得了檔案名稱列表,並能夠將它們複製到文字檔案中。唯一的問題是文件名包含擴展名“.jpg”使用我從終端獲得的列表,我現在必須瀏覽我的文本文件並手動刪除每個文件名中的擴展名(有一千多個)並且這將需要很長時間。有更容易的方法嗎?我可以讓終端顯示不含擴展名的文件名列表,以便我可以將其複製並貼上到列表中嗎?或者我可以從這些檔案中刪除擴展名,然後在終端中列出它們並複製它們的名稱嗎?還有別的辦法嗎?這裡很困惑。我不是程式設計師,只是網站設計。
希望有人能幫忙解決這個問題。感謝大家!
答案1
答案2
如果「in.txt」檔案中有檔案列表,請執行此腳本以取得「out.txt」中不含副檔名的檔案列表:
#!/bin/bash
while read fullfile; do
filename=$(basename "$fullfile")
filename="${filename%.*}"
echo $filename >> out.txt
done <in.txt
答案3
你用vi
(或vim
)嗎?如果您這樣做,那麼,由於您已經在文字檔案中獲得了 JPEG 檔案名,最簡單的方法可能是使用vi
/編輯該檔案vim
並輸入
:%s/\.jpg$//
這表示,在文件中的每一行中,尋找.jpg
出現在行尾的內容,將其刪除,然後將其替換為空白。如果有些行不以 結尾.jpg
,那也沒關係;它們將被忽略(跳過)。若每行有多個產品名稱(檔案名稱),如下所示
hammer.jpg screwdriver.jpg wrench.jpg
只需省略$
並添加g
並說
:%s/\.jpg//g
這將刪除全部的出現.jpg
,即使它們不在行尾。