Linux 在bash脚本中将*.txt.csv文件重命名为.csv

Linux 在bash脚本中将*.txt.csv文件重命名为.csv,linux,bash,shell,csv,export-to-csv,Linux,Bash,Shell,Csv,Export To Csv,我有.txt文件,我把它作为$item,然后用它更改编码 iconv -f $currentEncoding -t $targetEncoding "$item" -o "$item.tmp" 然后,我将它再次保存到txt文件使用 mv "$item.tmp" "$item.txt"; 接下来,我在txt文件中整理了一些内容,并将其保存为csv文件 tr -d '"' < "$ite

我有.txt文件,我把它作为$item,然后用它更改编码

iconv -f $currentEncoding -t $targetEncoding "$item" -o "$item.tmp"
然后,我将它再次保存到txt文件使用

 mv "$item.tmp" "$item.txt";
接下来,我在txt文件中整理了一些内容,并将其保存为csv文件

 tr -d '"' < "$item.txt" > "$item.csv";
tr-d''<“$item.txt”>“$item.csv”;

但最终我的文件被存储为扩展名“*.txt.csv”-我希望它们只是.csv-有人能帮我看看我做错了什么,或者我可以更改什么吗?谢谢

据我所知,您的$item的值中已经有.txt。 因此,如果在每个命令后列出文件,您应该会看到中间文件,如

xyz.txt.tmp
xyz.txt.txt
xyz.txt.csv
因此,当您设置item变量时,只需按如下所示执行${item%%.*},它就可以正常工作了

item=xyz.txt               
item="${item%%.*}"    
echo $item        
xyz

据我所知,您的$item的值中已经有.txt。 因此,如果在每个命令后列出文件,您应该会看到中间文件,如

xyz.txt.tmp
xyz.txt.txt
xyz.txt.csv
因此,当您设置item变量时,只需按如下所示执行${item%%.*},它就可以正常工作了

item=xyz.txt               
item="${item%%.*}"    
echo $item        
xyz
运行:

如果变量
$f
包含字符串
item.txt.csv
,则表达式
${f/.txt./.}
从文件名中删除
.txt
,并仅给出字符串
item.csv

警告:如果其中一个文件名包含空格,则
for
语句将无法按预期工作。

运行:

item=xyz.txt               
item="${item%%.*}"    
echo $item        
xyz
如果变量
$f
包含字符串
item.txt.csv
,则表达式
${f/.txt./.}
从文件名中删除
.txt
,并仅给出字符串
item.csv

警告:如果其中一个文件名包含空格,则
for
语句将无法按预期工作

item=xyz.txt               
item="${item%%.*}"    
echo $item        
xyz