【问题标题】:Move similar filenames to dir - Bash将相似的文件名移动到目录 - Bash
【发布时间】:2017-03-09 15:49:48
【问题描述】:

我有几个名称为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

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

【问题讨论】:

标签: bash


【解决方案1】:

工作量太大。

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

【讨论】:

  • hmm.. 命名问题:mv: rename /Users/myname/images_500ge2/77-52133-205.jpg to /Users/myname/images_organized/77/77-52133-205.jpg: No such file or directory
  • 不,本例中的 ID 是77-52133(最后出现的-
  • 啊,最后次出现意味着使用%而不是%%
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-05
  • 2017-02-25
相关资源
最近更新 更多