.png)
У меня есть около 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