如何使用 shell 命令重命名文件夹内的文件?

如何使用 shell 命令重命名文件夹内的文件?

我有一个文件在some/long/path/to/file/myfiel.txt

我想将其重命名为some/long/path/to/file/myfile.txt

目前我通过 来实现mv some/long/path/to/file/myfiel.txt some/long/path/to/file/myfile.txt,但是输入两次路径并不是很有效(即使使用制表符完成)。

我怎样才能更快地做到这一点?(我想我可以编写一个函数来仅更改文件名段,但那是计划 B)。

答案1

要通过单个命令执行此操作,您只需执行以下操作:

mv some/long/path/to/file/{myfiel.txt,myfile.txt}

这是完整文件名的示例,假设它是一个拼写错误,您可以执行以下操作:

mv some/long/path/to/file/myfi{el,le}.txt

两者都将扩展为完整命令,这些被称为括号扩展。 他们是由 zsh 支持

答案2

以下是几个选项:

更改目录:

cd /home/long/path
mv file1 file2
cd -

使用目录堆栈更改目录:

pushd /some/long/path
mv file1 file2
popd

使用子 shell 更改目录:

( 
  cd /some/long/path
  mv file1 file2
)   # no need to change back

使用括号扩展:

mv /some/long/path/{file1,file2}

使用变量:

D=/some/long/path
mv "$D/file1" "$D/file2"

答案3

更改目录,移动文件,然后更改回上一个目录;如下所示:

cd some/long/path/to/file
mv myfiel.txt myfile.txt
cd -

答案4

当我使用 subshel​​l 方法时,我倾向于在一行中执行此操作,如下所示

(cd /some/long/path ; mv myfiel myfile )

相关内容