Zmień nazwę plików txt na podstawie zawartości pliku (OSX)

0

Mam około 250 plików tekstowych o nazwie link.txt, które zawierają te informacje zawsze w wierszu / wierszu 3:

tytuł: jakiś tytuł

Potrzebuję jakiegoś skryptu, który może przechodzić przez te pliki, pobrać tytuł i umieścić go jako nazwę pliku. Struktura folderów to: 1-links / 20150528/1 /, więc byłoby świetnie, gdybym mógł po prostu uruchomić skrypt w „1-links” i zacząłbym szukać plików o nazwie „link.txt”.

Używam Mac OSX.

Czy ktoś może mi pomóc?

Lauri
źródło

Odpowiedzi:

1

Coś takiego może wykonać pracę:

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

Jeśli chcesz zmienić nazwę ostatniego katalogu na ścieżce zamiast pliku, możesz użyć czegoś takiego:

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
Romeo Ninov
źródło
Czy mogę po prostu wkleić to do terminala lub jak to uruchomić?
Lauri
Nieważne, udało mi się to uruchomić. Czy trudno byłoby zmodyfikować ten skrypt, aby zamiast zmiany nazwy pliku link.txt zmienił nazwę folderu nadrzędnego? Tak więc w moim poprzednim przykładzie folder o nazwie „1”.
Lauri
Czy chcesz zmienić nazwę 1 / link.txt na (na przykład) name / link.txt?
Romeo Ninov
Tak, dokładnie tak.
Lauri
Zobacz moją zredagowaną odpowiedź. BTW to nie jest testowane
Romeo Ninov