从文件名中删除/删除字符串

ali*_*rth 3 command-line batch-rename

我有一堆以行结尾的文本文件www.thethinkfoundation.org,例如:

file1.www.thethinkfoundation.org.txt
file2.www.thethinkfoundation.org.txt
.
.
.

file100.www.thethinkfoundation.org.txt
Run Code Online (Sandbox Code Playgroud)

我希望删除/删除www.thethinkfoundation.org

我在终端中尝试了以下命令来实现它:

for f in www.thethinkfoundation.org*; do mv "$f" "${f#thethinkfoundation.org}"; done
Run Code Online (Sandbox Code Playgroud)

结果是:

file1..txt
file2..txt
.
.
.

file100..txt
Run Code Online (Sandbox Code Playgroud)

预先感谢您提供有效的解决方案。

PS:我不想使用该rename命令。我实际上正在寻找一款可以跨 Linux 和 *BSD 发行版运行的产品。我首选的文本编辑器是nano.

Raf*_*ffa 5

基于Shell 参数扩展bash和其他一些 shell 的子字符串替换可以通过两种方式实现:

首先,您可以仅替换第一个出现的模式(从左到右),如下所示:

${var/pattern/replacement}
Run Code Online (Sandbox Code Playgroud)

其次,您可以替换所有出现的模式,如下所示:

${var//pattern/replacement}
Run Code Online (Sandbox Code Playgroud)

var包含字符串的变量/参数在哪里,pattern是您希望在该字符串中查找和替换的模式,replacement是您希望替换的替换项pattern,也可以留空,即${var//pattern/}如果您只想删除该模式从字符串中。

因此,您想要的解决方案将如下所示:

${var/pattern/replacement}
Run Code Online (Sandbox Code Playgroud)

我添加了echo一个空运行,以便您可以先对其进行测试,然后取出echo并再次运行它以完成实际工作。