【发布时间】:2023-04-07 00:56:02
【问题描述】:
所以我在一个文本文件中放了很多文件名,这些文件具体是.log 文件:
ls *.log > finished_data.txt
现在我有了.log 文件的列表,如何保留名称但删除.log 扩展名?
我的思维过程正在重命名它们?
【问题讨论】:
-
你有没有注意到这个页面右上角的
Search Q&A框?
所以我在一个文本文件中放了很多文件名,这些文件具体是.log 文件:
ls *.log > finished_data.txt
现在我有了.log 文件的列表,如何保留名称但删除.log 扩展名?
我的思维过程正在重命名它们?
【问题讨论】:
Search Q&A框?
只需遍历.log 文件并移动它们:
for file in *.log
do
mv "$file" "${file%.log}"
done
$ d="a.log.log"
$ echo "${d%.log}"
a.log
【讨论】:
mv "$file" "${file}.log"。
% 和%% 感到困惑。我看到% 去掉了最短的匹配,这是最准确的。关于for循环的语法:有什么区别吗?
for file in ...; do 而不是 for file in ... + new line + do。你是绝对正确的,更新。
使用rename 重命名所有.log 文件,方法是从末尾删除.log:
rename 's/\.log$//' *.log
\.log$ 与文件名末尾的 .log 匹配,并通过替换为空白来省略如果您使用的是prename,那么您可以先进行试运行:
rename -n 's/\.log$//' *.log
如果对所做的更改感到满意:
rename 's/\.log$//' *.log
【讨论】: