有没有办法让 mv 创建要移动到的目录,如果它不存在?

新手上路,请多包涵

所以,如果我在我的主目录中并且我想将 foo.c 移动到 ~/bar/baz/foo.c ,但这些目录不存在,有没有办法自动创建这些目录,这样你只需要输入

mv foo.c ~/bar/baz/

一切都会好起来的?似乎您可以将 mv 别名为一个简单的 bash 脚本,该脚本将检查这些目录是否存在,如果不存在,则调用 mkdir 然后调用 mv,但我想我会检查是否有人有更好的主意。

原文由 Paul Wicks 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.8k
2 个回答

这个单线如何(在 bash 中):

 mkdir --parents ./some/path/; mv yourfile.txt $_

打破它:

 mkdir --parents ./some/path
# if it doesn't work; try
mkdir -p ./some/path

创建目录(包括所有中间目录),之后:

 mv yourfile.txt $_

将文件移动到该目录($_ 扩展为传递给上一个 shell 命令的最后一个参数,即:新创建的目录)。

我不确定这在其他 shell 中会起作用多远,但它可能会给你一些关于寻找什么的想法。

下面是一个使用这种技术的例子:

 $ > ls
$ > touch yourfile.txt
$ > ls
yourfile.txt
$ > mkdir --parents ./some/path/; mv yourfile.txt $_
$ > ls -F
some/
$ > ls some/path/
yourfile.txt

原文由 KarstenF 发布,翻译遵循 CC BY-SA 4.0 许可协议

mkdir -p `dirname /destination/moved_file_name.txt`
mv /full/path/the/file.txt  /destination/moved_file_name.txt

原文由 Billmc 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题