linux - Linux 中 mv 命令的使用
问题描述
我有一堆具有不同扩展名的文件:
.png .fa .sh
它们位于名为“文件”的目录中。
我想移动每一个
.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
存在。你说的是“上层目录”;你打算写:
mv *.sh ../Golden_Asian.git
如果父目录中有一个名为 的目录Golden_Asian.git
,那么脚本将被移动到那里。如果没有目录,则该文件将被上移一级并重命名。同样,尾随/
可以防止混淆。
请注意,将文件移动到 GIT 目录(尤其是裸存储库)可能不是一个好主意。
推荐阅读
- python - 如何将文件从服务器发送回客户端?
- c# - 意外的元组不等式
- xamarin - Tab 键未在 Xamarin 表单 iOS 中侦听 CustomViewRenderer
- apache-kafka - 从 Kafka 中检索具有匹配一个很长列表的一个值的字段的信息
- powershell - PowerShell哈希表过滤数组中的值
- laravel - 如何在 Laravel Passport 中检查身份验证状态?
- vb.net - 多线程(将文本附加到文本框)
- flutter - 我在 Flutter 开发中遇到此错误
- python - 如何将我的 Python 项目(带有 Tkinter 的 GUI)转换为具有数据库依赖性的 .exe?
- javascript - 有选择地添加和删除相同 CSS 属性的值