用於識別檔案名稱直至“-”符號並建立具有相同名稱的資料夾的腳本將所有檔案移至該資料夾中

用於識別檔案名稱直至“-”符號並建立具有相同名稱的資料夾的腳本將所有檔案移至該資料夾中

我有這個

/Folder1/108462-2.jpg
/Folder1/108462-3.jpg
/Folder1/BSR2333-1.jpg
/Folder1/BSR2333-2.jpg
/Folder1/DKS23108554-1.jpg
/Folder1/DKS23108554-2.jpg

我想要這個:

/108462/108462-2.jpg
/108462/108462-3.jpg
/BSR2333/BSR2333-1.jpg
/BSR2333/BSR2333-2.jpg
/DKS23108554/DKS23108554-1.jpg
/DKS23108554/DKS23108554-2.jpg

我見過這個;

do if [[ -f "$file" ]]; then mkdir "${file:0:9}" mv "$file" "${file:0:9}"; fi; done 

但並沒有完全做到...

但如何修復使用“-”之前的整個名稱來建立資料夾並將檔案放入該資料夾中。預先感謝,對 mac 終端非常陌生

答案1

根據描述,您想要將前導變更/Folder1為資料夾中檔案的名稱,直到-檔案名稱中的 。

這是一個原始的例子有意義的變數名用於可讀的程式碼。

#! /bin/bash

pathname=/Folder1/108462-2.jpg
newfolder="$(dirname "$pathname")"
newfolder="${newfolder/-.*$//}"
filenamepartofpathname="$(basename $pathname)"
newpathname="$newfolder/$filenamepartofpathname"
echo "$newpathname"

外殼檢查不產生輸出:

$ shellcheck primitive-example.sh
(no output)
$ ./primitive-example.sh
/108462/108462-2.jpg

請注意,如果文件有多個,-您可能需要調整原始範例。

您也可以嘗試“代碼高爾夫”https://codegolf.stackexchange.com/尋求幫助以使其不那麼原始但可讀性較差。

相關內容