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

Leo*_*sov 8 unix zsh 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 计划)。

Tam*_*man 11

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

mv some/long/path/to/file/{myfiel.txt,myfile.txt}
Run Code Online (Sandbox Code Playgroud)

这是完整文件名的示例,鉴于这是一个错字,您可以执行以下操作:

mv some/long/path/to/file/myfi{el,le}.txt
Run Code Online (Sandbox Code Playgroud)

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


tyl*_*erl 5

这里有几个选项:

切换到目录:

cd /home/long/path
mv file1 file2
cd -
Run Code Online (Sandbox Code Playgroud)

使用目录堆栈更改目录:

pushd /some/long/path
mv file1 file2
popd
Run Code Online (Sandbox Code Playgroud)

使用子shell切换到目录:

( 
  cd /some/long/path
  mv file1 file2
)   # no need to change back
Run Code Online (Sandbox Code Playgroud)

使用大括号扩展:

mv /some/long/path/{file1,file2}
Run Code Online (Sandbox Code Playgroud)

使用变量:

D=/some/long/path
mv "$D/file1" "$D/file2"
Run Code Online (Sandbox Code Playgroud)