Sida 1 av 1

Sortera filer in i mappar

Postat: 26 mar 2015, 10:56
av Ainigma
Vilket är det bästa kommandot om man vill sortera filer in i mappar? Jag vill alltså inte bara använda titeln på filen för då kan jag ju använda 'mv' utan jag vill att terminalen kontrollerar vissa ord i filen(det är pdf-filer och textfiler) och med hjälp av det sorterar in i rätt mapp. Det bästa vore om jag kunde ha det booleskt så att sorteringen blir mera specifik. Kommandot 'sort' är väl bara för att sortera text i en textfil, inte att sortera filer in mappar vad jag förstår. :)

Re: Sortera filer in i mappar

Postat: 26 mar 2015, 12:12
av Osprey
Det där finns det nog inget färdigt kommando som klarar av, men däremot så är det rätt enkelt att "hacka ihop" ett script som fixar det...

Generellt så kan väl scriptet bli något som:

Kod: Markera allt

#! /bin/bash
#
for FILE in *; do
	if [[ ! -d "$FILE" ]]; then
		if [[ ! -z $(grep "sökbegrepp1" "$FILE") ]]; then
			mv "$FILE" dir1
		elif [[ ! -z $(grep "sökbegrepp2" "$FILE") ]]; then
			mv "$FILE" dir2
		elif [[ ! -z $(grep "sökbegrepp3" "$FILE") ]]; then
			mv "$FILE" dir3
		else
			mv "$FILE" dir4
		fi
	fi
done
...och att lägga till lite mer villkor så att du kan åstadkomma vilka booleska funktioner du vill, är ju inte så svårt... :)

Re: Sortera filer in i mappar

Postat: 26 mar 2015, 12:22
av Ainigma
Ok tack :D Nu är jag inte bra på detta så det är inte helt klart för mig vad skriptet säger, men jag gissar att det uttrycker en disjunktion, hur uttrycker man ett tillägg av en konjunktion av söktermerna i pdf:en ?

Re: Sortera filer in i mappar

Postat: 26 mar 2015, 12:34
av Osprey
Det är bara att utforma begreppet i if-satsen så att det motsvarar det du vill uppnå med konjunktionen.

Logiska operatorer i bash är t.ex:

Kod: Markera allt

AND    &&
OR     ||
NOT    !
XOR    ^

Re: Sortera filer in i mappar

Postat: 26 mar 2015, 12:54
av Ainigma
Ok tack :D