脚本识别文件名直到“-”符号并创建同名文件夹,将所有文件移动到该文件夹​​中

脚本识别文件名直到“-”符号并创建同名文件夹,将所有文件移动到该文件夹​​中

我有这个

/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/以获得帮助,使其不那么原始但可读性更低。

相关内容