我知道如何在 Unix 中重命名文件:
$ mv ~/folder/subfolder/file.txt ~/folder/subfolder/file.sh
^-------this part------^ ^------this part-------^
Run Code Online (Sandbox Code Playgroud)
重复~/folder/subfolder/file
两次需要很长时间。
有没有更快的方法?
cuo*_*glm 109
如果您的 shell支持 Brace Expansion(与csh
, tcsh
, ksh
, zsh
, bash
, mksh
, lksh
, pdksh
,yash
一起使用,通过在交互式 shell 中使用, 或调用或设置启用大括号扩展):yash --brace-expand
set -o brace-expand
fish
mv ~/folder/subfolder/file.{txt,sh}
Run Code Online (Sandbox Code Playgroud)
jof*_*fel 23
您也可以使用rename
(util-linux 包的一部分)。
rename .txt .sh ~/folder/subfolder/file.txt
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅重命名手册页。
小智 10
以上都是好的。这也可以:
( cd ~/folder/subfolder && mv file.txt file.sh )
Run Code Online (Sandbox Code Playgroud)
不可以。您需要提供文件的完整路径才能重命名它。唯一的选择是在运行之前移动到目标文件夹mv
:
cd ~/folder/subfolder/
mv file.txt file.sh
Run Code Online (Sandbox Code Playgroud)
或者,您可以编写一个小函数来重命名目标目录中的文件。例如,将这些行添加到您的 shell 初始化文件(~/.bashrc
如果您正在使用bash
):
lmv(){
_path=$(dirname -- "$1")
_target="${_path%/}/$2"
mv -- "$1" "$_target"
}
Run Code Online (Sandbox Code Playgroud)
然后,打开一个新终端或只是运行source ~/.bashrc
以重新读取 init 文件,您可以执行以下操作:
lmv ~/folder/subfolder/file.txt file.sh
Run Code Online (Sandbox Code Playgroud)