首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >长名Linux文件

问长名Linux文件
EN

Server Fault用户
提问于 2018-01-20 17:52:01
回答 4查看 3.8K关注 0票数 20

在Linux中,我有时会重命名如下文件:

代码语言:javascript
复制
mv dir1/dir2/dir3/file.txt  dir1/dir2/dir3/file.txt.old

请注意,我只想重命名该文件,而不是将其移动到另一个目录。

有什么命令可以让我做这个命令的速记版本吗?我的想法是:

代码语言:javascript
复制
mv dir1/dir2/dir3/file.txt  file.txt.old

或者甚至类似的东西(只是附加在名字后面):

代码语言:javascript
复制
mv dir1/dir2/dir3/file.txt  {}.old

我的目标是不必再次指定完整的路径。

我知道我写的那些“例子”不管用,但这只是我想要实现的一个想法。

我不想要光盘到目录。

EN

回答 4

Server Fault用户

回答已采纳

发布于 2018-01-20 18:14:24

对于单个文件,请尝试

代码语言:javascript
复制
mv dir1/dir2/dir3/file.{txt,txt.old}

当X{a,b}结构扩展到Xa Xb时,可以使用

代码语言:javascript
复制
echo dir1/dir2/dir3/file.{txt,txt.old}

看看它是否符合你的需要。

注意:

  1. 对于多个文件mv 1/dir2 2/dir2 3/file{1,2,3}.{txt,txt.old}

不太可能扩展到你想要的。(这将扩展到file.txt file1.txt.old file2.txt .)

  1. 根据注释,可以将{txt,txt.old}缩短为{,.old}
  2. 如果目录名是非矛盾的,则可以使用通配符。mv *1/*2/d*/*{,旧}

对于多个文件,使用rename

代码语言:javascript
复制
rename -n s/txt/old.txt/ dir1/dir2/dir3/file*.txt 

删除-n以具有有效的重命名。

票数 46
EN

Server Fault用户

发布于 2018-01-21 19:56:44

对于一次性的情况,如果我不想改变我的当前目录,我可以只使用一个子shell:

代码语言:javascript
复制
(cd dir1/dir2/dir3/ && mv file.txt file.txt.old)

因为在子shell中是cd,所以没有在实际的shell中更改目录。

票数 4
EN

Server Fault用户

发布于 2018-01-22 04:53:31

如果您想输入子目录以缩短mv命令,但希望稍后返回到当前目录,则有两种方法可以做到这一点。一种方法是将cd和mv放在子subshell中(正如已经建议的那样)。

另一种方法是使用pushd和popd更改目录:

代码语言:javascript
复制
pushd dir1/dir2/dir3/; mv file.txt file.txt.old; popd

pushd命令类似于cd,只不过它首先将当前目录的名称推到堆栈上。popd从堆栈中移除顶部名称并更改该目录。

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

https://serverfault.com/questions/893239

复制
相关文章

相似问题

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