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?

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

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.