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.