如何像使用文件管理器一样从终端交互式地编辑文件名?

如何像使用文件管理器一样从终端交互式地编辑文件名?

在命令行中,可以通过将整个新名称指定为来重命名文件mv

mv oldname newname

或者使用正则表达式和 Perlfile-rename命令等。

rename -d 's/old/new/' oldname

但是,是否可以通过手动移动光标并更改其中的位来交互式地重命名文件,就像在文件管理器中重命名文件一样?

文件管理器重命名

答案1

使用更多实用程序vidir.

vidir oldname

将打开文件路径$EDITOR(可以是基于文本的编辑器或图形编辑器,例如codium -w)。例如nano

维迪尔与纳米

人们可以根据需要提供任意数量的文件,vidir因为其主要用例是一次重命名许多文件:

vidir mydir/*

答案2

可以在如下脚本中完成:

#! /bin/zsh -
zmodload zsh/system
ret=0
for old do
  new=$old
  ERRNO=0
  if [[ ! -e $old && ! -L $old ]]; then
    syserror -p "$old: "
  elif
    vared -p "Renaming $old:q to: " new &&
      [[ -n $new && $old != $new ]]
  then
    mv -iv -- "$old" "$new" || ret=$?
  fi
done
exit $ret

请注意,如果目标文件($new由 编辑vared)最终成为以下类型的文件目录(或目录的符号链接),像往常一样,mv将尝试移动源 ( $old) 文件进入它。使用 GNU mv,您可以添加选项-T来尝试将文件重命名为该文件。

shellbash必须IFS= read -rep Prompt -i "$old" new执行一些类似于 zsh 的操作varedvariable editor ),但它对于包含换行符的文件名无法正常工作。


1 在最新版本中,添加-d ''允许输入多行文件名,但随后您需要按Ctrl+JCtrl+ @/ Space(无论您的终端发送 NUL 的任何组合)来接受新文件名。

答案3

我创建了一个轻量级命令行重命名实用程序除其他功能外,它还允许通过其edit命令直接编辑:

在此输入图像描述

项目主页:
https://github.com/fonic/infiren

依赖项:
Bash、GNU 查找

相关内容