[英]renaming *.txt.csv files to .csv in bash script
我有 .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";
但最终我的文件以扩展名“* .txt.csv”存储 - 我希望它们只是.csv - 谁能帮我请教我做错了什么或者我可以改变什么。 谢谢
据我了解,您的 $item 价值中已经有.txt 。 因此,如果您在每个命令之后列出文件,您应该会看到中间文件,例如
xyz.txt.tmp
xyz.txt.txt
xyz.txt.csv
因此,当您设置 item 变量时,只需执行 ${item%%.*} 如下所示,它应该可以按预期工作。
item=xyz.txt
item="${item%%.*}"
echo $item
xyz
跑:
for f in *.txt.csv; do mv $f ${f/.txt./.}; done
如果变量$f
包含字符串item.txt.csv
,则表达式${f/.txt./.}
从文件名中删除.txt
并仅给出字符串item.csv
。
注意:如果其中一个文件名包含空格, for
语句将无法按预期工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.