我有一个文件目录,所有文件都以某个前缀 {0000..0030} 开头,并且都遵循如下命名约定:0000_0000_124_23.png, 0000_0001_124_23.png, 0001_0001_124_23.png, ...
我创建了与文件前缀对应的子目录0000/, 0001/, ...
,并尝试将文件移动到与其前缀匹配的子目录中。我试过了,for i in {00..30}; do mv 00$i_*.png 00$i/; done
但似乎只能将所有文件移动到一个子目录中。我如何确保文件进入正确的文件夹?
答案1
问题在于:
00$i_*.png
下划线是标识符名称中的有效字符,但变量$i_
为空,因此它扩展为
00*.png
并移动所有文件。
解决方案
将变量名与下划线分隔。
00$i\_*.png
或者
00${i}_*.png