在 Linux 中使用 mv 命令

Use of mv comand in Linux

我有一堆文件 有不同的扩展名:

.png .fa .sh

它们位于名为 'files' 的目录中。

我想移动每个

.png to images directory
.fa to fasta directory
.sh to upper directory Golden_Asian.git/

移动 .png 和 .fa 文件效果很好, 但是对于 .sh 文件,当我做

mv files/*.sh Golden_Asian.git

它刚刚制作了类型 POSIX shell 脚本,ASCII 文本可执行文件,名称为

Golden_Asian.git

原始文件的名称是

 script.sh

所以我应该得到像

这样的结果
Golden_Asian.git/script.sh

是我做错了什么还是结果正确?

"files"目录下的原文件不见了,我很确定 文件已转移到正确的目录,但不明白为什么名称已更改。

如果只有一个.sh文件,并且当前目录下没有名为Golden_Asian.git的目录,则为正确结果。您执行了 mv files/script.sh Golden_Asian.git,因此它将文件从原始名称移动到您指定的名称。如果当前目录中已经有一个文件 Golden_Asian.git,它将被新文件破坏(替换)。如果当前目录中有一个名为 Golden_Asian.git 的文件夹,则在命令后会有一个文件 Golden_Asian.git/script.sh。那不是你得到的,所以可以合法地推断你在执行命令时在当前目录中没有名为 Golden_Asian.git 的文件夹。

如果您指定:

mv *.sh Golden_Asian.git/

那么它会要求目录存在,结果会是一个文件 Golden_Asian.git/script.sh。如果您有多个 .sh 文件,那么您需要目录 Golden_Asian.git 存在。你说"upper directory";你打算写:

mv *.sh ../Golden_Asian.git

如果父目录中有一个名为 Golden_Asian.git 的目录,那么脚本就会被移到那里。如果没有目录,该文件将被上移一个级别并重命名。同样,尾随 / 可以避免混淆。

请注意,将文件移动到 GIT 目录(尤其是 bare repository)可能不是一个好主意。