ファイルの内容に基づいて txt ファイルの名前を変更する (OSX)

ファイルの内容に基づいて txt ファイルの名前を変更する (OSX)

私は約 250 個の txt ファイルを持っており、すべて link.txt という名前が付けられており、これらのファイルの 3 行目には常に次の情報が含まれています。

タイトル: 何らかのタイトル

これらのファイルを調べてタイトルを取得し、それをファイル名として設定できるスクリプトが必要です。フォルダー構造は 1-links/20150528/1/ なので、"1-links" でスクリプトを実行するだけで、"link.txt" という名前のファイルの検索を開始できれば便利です。

私はMac OSXを使用しています。

誰か助けてくれませんか?

答え1

次のようなものが機能します:

for i in `find . -name link.txt -type f`;
do
nn=$(sed -n -e 3p -e "s/title:\ // "$i")
mv "$i" "`dirname $i`/$nn"
done

ファイルではなくパスの最後のディレクトリの名前を変更する場合は、次のようにします。

for i in `find . -name link.txt -type f`;
do
nn=$(sed  -n -e 's/title: //'  -e 3p $i)
odir=`dirname $i`
ndir=$(echo $odir|awk -v nn="$nn" -F\/ 'BEGIN {OFS="/"}  {$NF=nn;print}')
mv  "$odir" "$ndir"
done

関連情報