Переименование txt-файлов на основе их содержимого (OSX)

Переименование txt-файлов на основе их содержимого (OSX)

У меня есть около 250 txt-файлов, все с именами link.txt, и в них всегда в строке 3 содержится следующая информация:

title: Какой-то заголовок

Мне нужен какой-то скрипт, который может пройти по этим файлам, взять заголовок и поместить его в качестве имени файла. Структура папок следующая: 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

Связанный контент