我正在尝试将一系列目录中的所有文件移动到各自文件夹的子目录中。有许多需要这样做的文件夹,所以我已经将它放在了循环中。为了举例说明,我已经减少了数量。
read var1
case ${var1} in a) sub="sub_directory1";; b) sub="sub_directory2";; esac
for ((i=1; i<=5; i++)); do
case ${i} in
1) t=a;; 2) t=b;; 3) t=c;; 4) t=d;; 5) t=d;;
esac
mv "${location[files]}${t}/*.*" "${location[files]${t}/${sub}
done
${location[files]}
、${t}
和${sub}
都是目录,因此结构看起来类似于这样:
/files/a/file1.txt
/files/a/file2.txt
/files/a/sub_directory1
/files/a/sub_directory2
/files/b/file33.txt.3824
/files/b/file52f.log.345
/files/b/sub_directory1
/files/b/sub_directory2
等等,这里需要进行翻译!
需要移动/files/a/
文件夹中的文件到files/a/sub_directory1
中。这个思路就是这样。
当我在脚本中运行时,变量被正确地扩展了,但显然对于mv命令来说并不正确。我收到了如下错误提示:
mv: cannot rename files/a/*.* /files/a/sub_directory1/*.*:
No such file or direbctory
当我手动执行相同的命令时:
mv /files/a/*.* /files/a/sub_directory1
它按照预期工作。
是通配符被当做字面意思处理了吗?