关于Linux:删除文本文件bash中的文件扩展名

Removing the file extension in a text file bash

本问题已经有最佳答案,请猛点这里访问。

所以我在一个文本文件中放了一堆文件名,这些文件是特定的.log文件:

1
ls *.log > finished_data.txt

既然我有了.log文件的列表,那么如何保留这些文件的名称,而删除.log扩展名呢?我的思维过程正在重新命名它们?


只需循环访问.log文件并移动它们:

1
2
3
4
for file in *.log
do
    mv"$file""${file%.log}"
done

这将使用shell参数扩展:

1
2
3
$ d="a.log.log"
$ echo"${d%.log}"
a.log


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

1
rename 's/\.log$//' *.log
  • \.log$与文件名末尾的.log匹配,用空白替换

如果您使用的是prename,那么您可以先进行一次试运行:

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

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

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