我有一个目录,里面有大量的文件,这些文件的命名格式不正确,例如file..txt
,file2..txt
等等......
那么如何轻松地.
从文件名中删除第二个呢?
任何适用的方法都值得赞赏,包括 awk、sed、grep 等......
答案1
使用rename
(根据 heemayl 的建议,我将通配符范围缩小到以 结尾的文件名..txt
):
rename -n 's/(.*)\./$1/' *..txt
这将匹配文件名直到最后一个点,并用除最后一个点之外的所有内容替换匹配项。
如果结果是预期的,请删除该-n
选项:
rename 's/(.*)\./$1/' *..txt
答案2
答案3
我有一个可行的解决方案,并且仍在努力实现更好的解决方案:
for f in *; do mv $f ${f%.txt}txt; done
多亏了@heemayl笔记:
不要使用 *,而要使用 *..txt 来获取文件,因为当您有任何文件没有 . 并且只有一个时,只有 * 会导致问题
因此变成:
for f in *..txt; do mv $f ${f%.txt}txt; done
答案4
执行此操作的最简单方法是在包含上述格式的文件名的目录中运行以下命令
rename 's/\.+txt/\.txt/' *