关于将类似的文件名移动到dir:将类似的文件名移动到dir – Bash

Move similar filenames to dir - Bash

我有几个名称为ID-sequence.jpg的图像,其中一组图像的ID相同,例如:

1
2
3
4
5
6
7
4fd-00027-1.jpg
4fd-00027-2.jpg
4fd-00027-3.jpg
6gq-00017-1.jpg
6gq-00017-2.jpg
6gq-00752-3.jpg
6gq-00752-4.jpg

…现在,我需要将所有这些文件移动到它们自己的目录中,这些目录也应该与ID同名。我想我需要这样的东西:

1
2
3
4
5
6
7
8
9
for FILE in *; do
ID_REGEX="(.*(?=-))"
if [[ $FILE =~ $ID_REGEX ]]; then
  ID="${BASH_REMATCH[1]}"
  echo"$ID"
  mkdir -p"/Users/myname/images_organized/$ID"
  $(mv"/Users/myname/images/$FILE""/Users/myname/images_organized/$ID/$FILE" )
fi
done

…但它什么也没做。也没有错误。


工作太多了。

1
2
3
4
5
6
for file in *
do
  dir="${file%%-*}"
  [ -d"$dir" ] || mkdir"$dir"
  mv"$file""$dir"
done