
我有一堆以行結尾的文字文件www.thethinkfoundation.org
,例如:
file1.www.thethinkfoundation.org.txt
file2.www.thethinkfoundation.org.txt
.
.
.
file100.www.thethinkfoundation.org.txt
我希望刪除/刪除www.thethinkfoundation.org
我在終端機中嘗試了以下命令來實現它:
for f in www.thethinkfoundation.org*; do mv "$f" "${f#thethinkfoundation.org}"; done
結果是:
file1..txt
file2..txt
.
.
.
file100..txt
預先感謝您提供有效的解決方案。
PS:我不想使用該rename
指令。我實際上正在尋找一款可以跨 Linux 和 *BSD 發行版運行的產品。我首選的文字編輯器是nano
.
答案1
子字串替換基於外殼參數擴展inbash
和其他一些 shell 也可以透過兩種方式實現:
第一的,你可以替換僅第一次出現(從左到右)這樣的模式:
${var/pattern/replacement}
第二,你可以替換所有出現的情況像這樣的模式:
${var//pattern/replacement}
var
包含字串的變數/參數在哪裡,pattern
是您希望在該字串中查找和替換的模式,是replacement
您希望替換的替換項,pattern
也可以留空,即${var//pattern/}
如果您只想刪除該模式從字串中。
因此,您想要的解決方案將如下所示:
for f in *www.thethinkfoundation.org*; do
echo mv -n -- "$f" "${f//www.thethinkfoundation.org./}"
done
我添加了echo
一個空運行,以便您可以先對其進行測試,然後取出echo
並再次運行它以完成實際工作。