“mv * dir”在脚本中不起作用?

时间:2010-05-28 15:33:27

标签: bash scripting

我想将所有文件移动到新目录。从命令行我可以做“mv newdir”,但如果我尝试使用这个脚本:

#!/bin/bash -f
#
mkdir newdir
mv *.* newdir

我收到以下消息:

mv: rename *.* to newdir/*.*: No such file or directory

2 个答案:

答案 0 :(得分:2)

脚本的第一行如下:

#!/bin/bash -f

调用脚本时,您将-f开关传递给bash。这会导致shell禁用文件名扩展,这也称为通配或模式匹配。从shebang行中删除-f

另外,您应该注意,要选择bash中的所有文件,您只使用“*”,而不是“*.*”。后者只会选择名称中带点的文件。这也可能导致您尝试将目录放入自身,这是一个无效的操作。

答案 1 :(得分:1)

如果要移动所有文件,请尝试以下操作:

mkdir newdir

找到。 -type f -exec mv“{}”newdir \;