使用单行命令更改多个文件扩展名

Aas*_*Raj 1 find xargs filenames mv

我有一些文件名包含多个扩展名:

$ ls -r
File1_345.R.12345
File1_3.234.R.6789
File1_2345.R.2345
File1_12345.R.12345
$
Run Code Online (Sandbox Code Playgroud)

我想重命名它们以删除所有现有的扩展名并将它们替换为.txt. 输出应如下:

$ ls -r
File1_345.txt
File1_3.txt
File1_2345.txt
File1_12345.txt
Run Code Online (Sandbox Code Playgroud)

是否可以使用 find 和 xargs 命令?

G-M*_*ca' 7

如果要从每个文件名中删除所有扩展名(第一个点之后的所有内容),请执行

$ for f in *
do
    mv -- "$f" "${f%%.*}.txt"
done
Run Code Online (Sandbox Code Playgroud)

当然,如果你真的想在一行中做到这一点,只需将上面的折叠起来即可

$ for f in *; do mv -- "$f" "${f%%.*}.txt"; done
Run Code Online (Sandbox Code Playgroud)