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

название: какое-то название

Мне нужен какой-то скрипт, который может пройти через эти файлы, взять заголовок и поставить его в качестве имени файла. Структура папок: 1-links/ 20150528/1/, поэтому было бы здорово, если бы я мог просто запустить скрипт в «1-links», и он начал бы искать файлы с именем «link.txt».

Я использую Mac OSX.

Может кто-нибудь мне помочь?

1 ответ1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .