在终端中灵活重命名

在终端中灵活重命名

假设我有一个包含一些文件的文件夹:

/Users/user101/Temp/rentest: ls
fi_name1.txt  fi_name2.txt  fi_name3.txt

我正在寻找一种灵活的重命名方法。例如,如果我这样做:

/Users/user101/Temp/rentest: ls | vim -

我进入 vim:

在此处输入图片描述

现在我该如何将其重定向回终端?此外,我该如何将其与mv命令结合使用来批量重命名目录中的文件?

我知道这很有rename用,大多数人的反应是只需学习一堆terminal命令,但我发现这是一种更有趣/更灵活的方法。有人知道这种方法或曾经尝试过吗?

编辑:人们倾向于stackexchange抓住问题的细节。但我不寻求这样的答案:“哦,你一个接一个地处理文件,所以只需使用mv”或“哦,列编辑模式只允许你对所有文件进行一种更改”。

这里的重点是,我不想每次想要为目录中的一堆文件添加前缀、后缀或某种奇怪的内缀时都去谷歌搜索。而且它可能不是全部文件。

/Users/ivanabraham/Temp/rentest: ls
fi_name1.txt  fi_name2.txt  fi_name3.txt  gi_name3.txt  gi_name4.txt

ls | grep 'fi*' | vim -

例如。

答案1

维迪尔更多工具似乎可以满足我的需求。在 MacOS 上,您可以执行以下操作:

brew install moreutils

一旦你有Homebrew设置。

在此处输入图片描述

考虑到有人编写了扩展/应用程序来做到这一点,能够从 CLI 做到这一点似乎不太可能,但如果有人能做到这一点,我会非常我很想知道他们是如何做到的。

答案2

看起来这个工具集没有得到维护,但我仍然使用它:https://www.nongnu.org/renameutils/

具体来说:

qmv(“快速移动”)程序允许在文本编辑器中编辑文件名。目录中所有文件的名称都写入文本文件,然后由用户编辑。读取并解析文本文件,并将更改应用于文件。

qmv可以在多种模式下运行,但我更喜欢使用它与命令行选项,-fdo该选项仅将目标列为编辑器中的一列。

相关内容