我已经将许多文件名放在一个文本文件中,这些文件名是特定的.log
文件:
ls *.log > finished_data.txt
现在我已经有了
.log
文件的列表,如何保留文件名但删除.log
扩展名呢?我的思路是将它们全部重命名。只需循环遍历 .log
文件并移动它们:
for file in *.log
do
mv "$file" "${file%.log}"
done
这里使用shell参数扩展:
$ d="a.log.log"
$ echo "${d%.log}"
a.log
mv "$file" "${file}.log"
。 - fedorqui%
和 %%
。我知道 %
取最短匹配,这是最准确的。关于 for
循环的语法:有什么区别吗? - fedorquifor file in ...; do
而不是 for file in ...
+ 换行 + do
。你说得对,我会更新的。 - fedorquirename
命令通过删除文件名末尾的.log
来重命名所有.log
文件:rename 's/\.log$//' *.log
\.log$
匹配文件名末尾的.log
并将其替换为空格以省略该部分如果您正在使用prename
,则可以先进行干运行:
rename -n 's/\.log$//' *.log
rename 's/\.log$//' *.log