删除文本文件bash中的文件扩展名

时间:2016-06-21 13:12:02

标签: linux bash

所以我在文本文件中加载了大量文件名,这些文件特别是single_open()个文件:

.log

现在,我有ls *.log > finished_data.txt 个文件列表,如何保留名称但删除.log扩展名? 我的思维过程是将它们全部重命名?

2 个答案:

答案 0 :(得分:7)

只需遍历.log文件并移动它们:

for file in *.log
do
    mv "$file" "${file%.log}"
done

这使用shell parameter expansion

$ d="a.log.log"
$ echo "${d%.log}"
a.log

答案 1 :(得分:1)

通过从末尾删除rename,使用.log重命名所有.log个文件:

rename 's/\.log$//' *.log
  • \.log$匹配文件名末尾的.log,并通过替换为空白而忽略

如果您使用的是prename,那么您可以先进行干跑:

rename -n 's/\.log$//' *.log

如果对要进行的更改感到满意:

rename 's/\.log$//' *.log