Перейменувати файли txt на основі вмісту файлу (OSX)


0

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

title: Деяка назва

Мені потрібен якийсь скрипт, який може пройти через ці файли, захопити назву і поставити його як ім'я файлу. Структура папок: 1-links / 20150528/1 / так було б чудово, якби я міг просто запустити скрипт у "1-ланках" і він би почав шукати файли з ім'ям "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

Чи можу я просто вставити це на термінал або як я можу запустити це?
Lauri

Неважливо, мені вдалося запустити його. Чи буде важко змінити цей сценарій, щоб замість перейменування link.txt перейменувати батьківську папку? Так у моєму попередньому прикладі папка з ім'ям "1".
Lauri

Ви хочете перейменувати 1 / link.txt, щоб стати (наприклад) ім'ям / link.txt?
Romeo Ninov

Так точно так.
Lauri

Див. Мою редаговану відповідь. До речі це не перевірено
Romeo Ninov
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.