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