我想将所有文件移动到新目录。从命令行我可以做“mv 。 newdir”,但如果我尝试使用这个脚本:
#!/bin/bash -f
#
mkdir newdir
mv *.* newdir
我收到以下消息:
mv: rename *.* to newdir/*.*: No such file or directory
答案 0 :(得分:2)
脚本的第一行如下:
#!/bin/bash -f
调用脚本时,您将-f
开关传递给bash。这会导致shell禁用文件名扩展,这也称为通配或模式匹配。从shebang行中删除-f
。
另外,您应该注意,要选择bash中的所有文件,您只使用“*
”,而不是“*.*
”。后者只会选择名称中带点的文件。这也可能导致您尝试将目录放入自身,这是一个无效的操作。
答案 1 :(得分:1)
如果要移动所有文件,请尝试以下操作:
mkdir newdir
找到。 -type f -exec mv“{}”newdir \;