簡體   English   中英

Bash重命名文件基於從另一個文件打印的行

[英]Bash rename file based on line printed from another file

我已經從https://www.grc.com/securitynow.htm下載了一系列文件,這是一個播客。 我每個播客下載了2個文件。

文件1名為sn-471.mp3(我依次命名為471)文件2命名為sn-471.txt(我依次命名為471)

我要這樣做的是,我正在打印文件的第六行,並從第二個定界符切到此行的末尾:

sed -n 6p sn-471.txt | cut -f2-

現在,這非常正常。 到目前為止,第六行的原因在我的測試中,第六行始終是TITLE:然后是選項卡,然后是劇集的標題。 我假設如果遇到第6行並不總是標題的問題,那么我可以grep代表TITLE:然后使用相同的剪切。

通過以上操作,我可以打印劇集的標題。 我正在嘗試做的並且似乎無法解決的問題是使用此數據來重命名mp3文件。

到目前為止,我已經提出了這個建議,但是它沒有用。

#/bin/bash
for i in 
  sn-471.txt;                                                                          
do
  X=$(sed -n 6p $i | cut -f2-)
  mv $i `${X}`.txt
done

我知道我很快將需要使“ sn-471.txt”部分類似於“ sn-*。txt”,但是對於此測試,這是我一直在使用的。 如果已經解決了這個問題,那么到目前為止,我還無法通過各種Google搜索找到它。

感謝您提供的任何幫助!

您可以使用命令替換將sed命令的輸出存儲到變量中。 然后,您可以使用參數擴展來刪除“ .txt”擴展名:

for file in sn-*.txt ; do
    title=$( sed -n 6p "$file" | cut -f2- )
    mv "${file%txt}"mp3 "$title".mp3
done

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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