将类似的文件名移动到dir语言 - Bash



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

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。我想我需要这样的东西:

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

…但是它什么也没做。

工作太多了。

for file in *
do
  dir="${file%%-*}"
  [ -d "$dir" ] || mkdir "$dir"
  mv "$file" "$dir"
done

最新更新