[英]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.