Nowe posty

Autor Wątek: Sortowanie plików według typu  (Przeczytany 7369 razy)

kamilo

  • Gość
Sortowanie plików według typu
« dnia: 2010-11-12, 12:35:01 »
Witam,
Chciałbym napisać skrypt który będzie wyszukiwał pliki w katalogu głównym użytkownika, a następnie sprawdzał jakiego są one typu (muzyka, filmy, archiwa, pliki tekstowe itp.) i w zależności od typu umieszczał w odpowiednim katalogu (Filmy, Muzyka, Obrazy itp.).

O ile samo określenie typu pliku po rozszerzeniu nie jest problemem to jednak problem pojawia się gdy plik nie ma rozszerzenia w nazwie pliku.  Chciałbym się dowiedzieć czy jest jakiś sposób aby "wyciągnąć" typ pliku i np. zapisać go do jakiejś zmiennej. Przeglądałem polecenia powłoki bash, ale nic nie udało mi się znaleźć. Ma ktos jakiś pomysł jak to rozwiązać ?

Z góry dzięki za pomoc.

borzole

  • Gość
Sortowanie plików według typu
« Odpowiedź #1 dnia: 2010-11-12, 14:23:52 »
użyj polecenia mimetype lub file

kamilo

  • Gość
Sortowanie plików według typu
« Odpowiedź #2 dnia: 2010-11-12, 15:10:56 »
Dzięki za odpowiedź, użyłem polecenia file -i NAME_FILE i faktycznie działa :)
Jeszcze raz wielkie dzięki :)

kamilo

  • Gość
Sortowanie plików według typu
« Odpowiedź #3 dnia: 2010-11-12, 15:33:57 »
Jest jednak jeszcze jeden problem.
Kiedy chcę sprawdzić jakiego typu jest plik i wyświetlić stosowny komunikat (lub wykonać jakąś operację) z wykorzystaniem warunku if.

#!/bin/bash
typ= file -i ~/bezpieczniki
pdf= application/pdf
if [ $typ == $pdf ]
then
echo "Typ pliku to PDF"
else
echo "Jakis inny typ pliku"
fi

Gdzie tu jest błąd? Bo ciągle wyświetla mi Typ pliku to PDF, nawet jeśli zmienię na plik innego typu.

borzole

  • Gość
Sortowanie plików według typu
« Odpowiedź #4 dnia: 2010-11-12, 18:09:22 »
oj, kilka źle przypisałeś parametry i przy porównaniu nie uwzględniłeś spacji
#!/bin/bash

plik="$HOME/bezpieczniki"

typ=$(file -bi "$plik" | cut -d';' -f1)
pdf='application/pdf'

echo $typ
echo $pdf

if [ "$typ" == "$pdf" ]
then
echo "Typ pliku to PDF"
else
echo "Jakis inny typ pliku"
fi

kamilo

  • Gość
Sortowanie plików według typu
« Odpowiedź #5 dnia: 2010-11-12, 18:41:04 »
W tej linijce był błąd, ale już sam doszedłem i poprawiłem
typ=$(file -bi "$plik" || cut -d';' -f1)


Teraz wszystko działa jak należy, dzięki za pomoc ;)

SickBoy

  • Gość
Sortowanie plików według typu
« Odpowiedź #6 dnia: 2011-01-15, 19:31:30 »
Witam. Właśnie jestem w trakcie nauki obsługi linux'a i jak na razie można śmiało stwierdzić, ze jestem w tym kompletnie zielony. Muszę stworzyć skrypt, który określi rozszerzenie pliku, a potem przydzieli go do danego folderu. Problem jest podobny do tego, który miał założyciel tematu, dlatego pisze tutaj. Dokładnie, chodzi mi o to, zeby rozszerzenie pliku było rozpoznane, a potem na jego podstawie plik został przeniesiony do odpowiedniego folderu, czyli .mp3 do 'MUZYKA', .jpg do 'OBRAZY', a .odt do 'DOKUMENTY'. Będę bardzo wdzięczny za pomoc.