因此,如果我在我的主目录中,我想将foo.c移动到~/bar/baz/foo.c,但这些目录不存在,是否有某种方法可以自动创建这些目录,以便您只需键入
mv foo.c ~/bar/baz/
然后一切都会好起来吗?似乎您可以将mv作为一个简单的bash脚本的别名,该脚本将检查这些目录是否存在,如果不存在,将调用mkdir,然后调用mv,但我认为我应该检查一下是否有人有更好的想法。
发布于 2009-02-13 22:22:11
下面这一行如何(在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 yourfile.txt $ > mkdir --parents ./some/path/; mv yourfile.txt $_ $ > ls -F some/ $ > ls some/path/ yourfile.txt
发布于 2012-06-22 03:19:06
mkdir -p `dirname /destination/moved_file_name.txt` mv /full/path/the/file.txt /destination/moved_file_name.txt
发布于 2012-04-26 11:54:06
另存为名为mv.sh的脚本
#!/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保留内存,而不必每次都读取脚本文件。
function mvp () dir="$2" # Include a / at the end to indicate directory (not filename)