首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >有没有办法让mv在目录不存在的情况下创建要移动到的目录?

有没有办法让mv在目录不存在的情况下创建要移动到的目录?
EN

Stack Overflow用户
提问于 2009-02-14 05:16:00
回答 14查看 252.3K关注 0票数 330

因此,如果我在我的主目录中,我想将foo.c移动到~/bar/baz/foo.c,但这些目录不存在,是否有某种方法可以自动创建这些目录,以便您只需键入

代码语言:javascript
复制
mv foo.c ~/bar/baz/ 

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

EN

回答 14

Stack Overflow用户

回答已采纳

发布于 2009-02-13 22:22:11

下面这一行如何(在bash中):

代码语言:javascript
复制
mkdir --parents ./some/path/; mv yourfile.txt $_

详细分析一下:

代码语言:javascript
复制
mkdir --parents ./some/path
# if it doesn't work; try
mkdir -p ./some/path

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

代码语言:javascript
复制
mv yourfile.txt $_

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

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

下面是一个使用此技术的示例:

代码语言:javascript
复制
$ > ls
$ > touch yourfile.txt
$ > ls
yourfile.txt
$ > mkdir --parents ./some/path/; mv yourfile.txt $_
$ > ls -F
some/
$ > ls some/path/
yourfile.txt
票数 350
EN

Stack Overflow用户

发布于 2012-06-22 03:19:06

代码语言:javascript
复制
mkdir -p `dirname /destination/moved_file_name.txt`  
mv /full/path/the/file.txt  /destination/moved_file_name.txt
票数 72
EN

Stack Overflow用户

发布于 2012-04-26 11:54:06

另存为名为mv.sh的脚本

代码语言:javascript
复制
#!/bin/bash
# mv.sh
dir="$2" # Include a / at the end to indicate directory (not filename)
tmp="$2"; tmp="${tmp: -1}"
[ "$tmp" != "/" ] && dir="$(dirname "$2")"
[ -a "$dir" ] ||
mkdir -p "$dir" &&
mv "$@"

或者将其放在~/.bashrc文件的末尾,作为替换每个新终端上的默认mv的函数。使用函数可以让bash保留内存,而不必每次都读取脚本文件。

代码语言:javascript
复制
function mvp ()
{
    dir="$2" # Include a / at the end to indicate directory (not filename)
    tmp="$2"; tmp="${tmp: -1}"
    [ "$tmp" != "/" ] && dir="$(dirname "$2")"
    [ -a "$dir" ] ||
    mkdir -p "$dir" &&
    mv "$@"
}

示例用法:

代码语言:javascript
复制
mv.sh file ~/Download/some/new/path/ # <-End with slash

这些是基于Chris Lutz提交的。

票数 24
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/547719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档