小编典典

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

all

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

mv foo.c ~/bar/baz/

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


阅读 80

收藏
2022-04-04

共1个答案

小编典典

这个单线如何(在 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
2022-04-04