簡體   English   中英

在 bash 腳本中將 *.txt.csv 文件重命名為 .csv

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM