Bash
bash 可以根據文件名創建文件夾,然後將文件移動到文件夾中嗎?
在 /Desktop/a/ 上,有一組文件:
DSCN1840.AVI00001.png DSCN1840.AVI00002.png DSCN1840.AVI00003.png DSCN1841.AVI00001.png
我想要的是具有以下結構:
Desktop/a/DSCN1840/ DSCN1840.AVI00001.png DSCN1840.AVI00002.png DSCN1840.AVI00003.png Desktop/a/DSCN1841/ DSCN1841.AVI00001.png
作為一次性步驟,您可以遍歷所有文件並收集所需的子目錄名稱;如果該子目錄尚不存在,請創建它;然後將該文件移動到該子目錄中:
for f in *.png do subdir=${f%%.*} [ ! -d "$subdir" ] && mkdir -- "$subdir" mv -- "$f" "$subdir" done
其中的關鍵部分是參數擴展 in
${f%%.*}
,它表示刪除%%
一個句點後跟任何內容的最長匹配部分 ( ),這有效地去除了例如.AVI00003.png
文件名的部分,只留下前導目錄指示符。