在Linux中,我有时会重命名如下文件:
mv dir1/dir2/dir3/file.txt dir1/dir2/dir3/file.txt.old请注意,我只想重命名该文件,而不是将其移动到另一个目录。
有什么命令可以让我做这个命令的速记版本吗?我的想法是:
mv dir1/dir2/dir3/file.txt file.txt.old或者甚至类似的东西(只是附加在名字后面):
mv dir1/dir2/dir3/file.txt {}.old我的目标是不必再次指定完整的路径。
我知道我写的那些“例子”不管用,但这只是我想要实现的一个想法。
我不想要光盘到目录。
发布于 2018-01-20 18:14:24
对于单个文件,请尝试
mv dir1/dir2/dir3/file.{txt,txt.old}当X{a,b}结构扩展到Xa Xb时,可以使用
echo dir1/dir2/dir3/file.{txt,txt.old}看看它是否符合你的需要。
注意:
不太可能扩展到你想要的。(这将扩展到file.txt file1.txt.old file2.txt .)
{txt,txt.old}缩短为{,.old}对于多个文件,使用rename
rename -n s/txt/old.txt/ dir1/dir2/dir3/file*.txt 删除-n以具有有效的重命名。
发布于 2018-01-21 19:56:44
对于一次性的情况,如果我不想改变我的当前目录,我可以只使用一个子shell:
(cd dir1/dir2/dir3/ && mv file.txt file.txt.old)因为在子shell中是cd,所以没有在实际的shell中更改目录。
发布于 2018-01-22 04:53:31
如果您想输入子目录以缩短mv命令,但希望稍后返回到当前目录,则有两种方法可以做到这一点。一种方法是将cd和mv放在子subshell中(正如已经建议的那样)。
另一种方法是使用pushd和popd更改目录:
pushd dir1/dir2/dir3/; mv file.txt file.txt.old; popdpushd命令类似于cd,只不过它首先将当前目录的名称推到堆栈上。popd从堆栈中移除顶部名称并更改该目录。
https://serverfault.com/questions/893239
复制相似问题