我有一个名为folder1的文件夹,其中有一堆图片,我想将每张图片保存在一个单独的文件夹中。该文件夹应具有与文件相同的名称,例如,如果图片名为“ st123”,我想创建一个名为“ st123”的文件夹,并将图片移到该文件夹中。我已经尝试了以下方法,但是我得到的错误是无法移动到其自身的子目录中。还有另一种解决方法吗?否则,是否可以将图像“ st123”保存在名为“ 123”的文件夹中(所以最后3个字符)?
#!/bin/bash
Parent="/home/me/myfiles/folder1"
for file in $Parent; do
dir="${file%%.*}"
mkdir -p "$dir"
mv "$file" "$dir"
done
尽管您想递归地遍历图像,但我建议您使用,该解决方案可能对您有用find
。如果确实如此,请告诉我,我将使用相关代码来编辑此答案。
for image in /home/me/myfiles/folder1/*; do
if [[ -f $image ]]; then
newf="${image%%?([ab]).*}"
mkdir -p "$newf"
mv -- "$image" "$newf"
fi
done
测试(启用extglob):
$ [/home/rany/] touch test/st123a.tif test/st123b.tif test/st456.jpg test/st456b.jpg test/st789.tif
$ [/home/rany/] for image in test/*; do newf="${image%%?([ab]).*}"; mkdir -p "$newf"; mv -- "$image" "$newf";done
$ [/home/rany/] tree test
test
├── st123
│ ├── st123a.tif
│ └── st123b.tif
├── st456
│ ├── st456b.jpg
│ └── st456.jpg
└── st789
└── st789.tif
3 directories, 5 files
根据OP的要求,我添加了以下更改:
a
或b
,例如,文件名st123a.ext和st123b.ext将进入相同的目录st123。重要提示:此功能需要启用extglob(即shopt -s extglob
)。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句