ファイルの内容を使用してファイルの名前を変更する

ファイルの内容を使用してファイルの名前を変更する

だから私は持っています複数のテキストファイルをダウンロードしました。このファイルの名前をタイトルに変更したいと思います。このファイルには何が含まれていますか?

出力はhead sn-800.txt次のとおりです

ギブソンリサーチコーポレーション https://www.GRC.com/

シリーズ:今安全です!
エピソード: #800
日付:2021年1月5日
タイトル: Sun Blizzard
ホスト:Steve GibsonとLeo Laporte
ソース: https://media.grc.com/sn/sn-800.mp3
アーカイブ: https://www.grc.com/securitynow.htm

簡単にsn-800.txt言えば、sn-800 - SolarBlizzard.txt

335ファイルに達するmvまで画面のすべての内容を表示します。

#!/bin/bash
for iEpisode in {802..807}; 
do 
  echo -n "sn-$iEpisode - ";
  grep "^TITLE:" sn-"$iEpisode".txt | 
  cut -d":" -f2 | 
  sed 's/\t//g' | 
  tr -d '\n';  
  echo ".txt";  
done

しかし、最後の部分(上記の `tr)から改行文字を削除する方法を見つけることができないようです。次のようになります。

.txt02 - Where the Plaintext Is
.txt03 - Comparative Smartphone Security
.txt04 - NAT Slipstreaming 2.0
.txt05 - SCADA Scandal
.txt06 - C.O.M.B.
sn-807 - Dependency Confusion.txt

何らかの理由で最後のファイルは正しいですが、古いファイルのどこかにまだ改行文字がありますか? ? ? (-n最後のファイルに対して操作を実行すると、echoすべてのファイル名が1つの文字列に連結されます。)

私は何が間違っていましたか? ? ?

答え1

これらのファイルにはCR / LF行末があるため、それらのファイルも削除する必要があります\r

...
tr -d '\r\n';
...

これが各行の先頭に現れる理由です。.txt最後に出力されますが、カーソルが行の先頭に戻った後です。

関連情報