Fórum Ubuntu CZ/SK

Ostatní => Tipy a triky pro Linux => Téma založeno: Martin Šácha 14 Prosince 2011, 12:41:02

Název: NewFilesRemover - netradiční záloha
Přispěvatel: Martin Šácha 14 Prosince 2011, 12:41:02
Objevují se vám v systému na různých místech divné soubory? Máte sdílený disk s windows a štve vás Thumbs.db (a ostatní win bordel) v každém adresáři? Nebo jen chtete mít přehled o nových souborech?

NewFilesRemover je nástroj, který udržuje seznam známých souborů a neznámé bez lítosti maže. Zároven udržuje historii seznamu, takže se lze vrátit ke starší verzi.

Kód: [Vybrat]
#!/bin/bash
filename="$(date +%d-%m-%Y_%H-%M-%S)" #filename pattern
defpath="$HOME/.NewFilesRemover/" #configuration path
#use / (slash) at the end of path!
searchpath="/path/to/directory/"

defpath=$(echo ${defpath%\/})$searchpath
mkdir -p $defpath
defpathnew=$defpath"new.txt" #temporary file
defpathold=$defpath"old.txt" #last used list
touch $defpathold

find -P $searchpath -true | grep -v -E "^(.|..|$defpath|$searchpath\r?\n?)$" > "$defpath$filename.txt"
sort $defpath$filename.txt > $defpathnew 2> /dev/null
if [ "$1" = "-r" ];
then
rm -rf $(comm -23 $defpathnew $defpathold)
else
comm -23 $defpathnew $defpathold
fi
mv $defpathnew "$defpath$filename.txt"

if [ "$1" != "-l" ];
then
cp "$defpath$filename.txt" $defpathold
else
rm "$defpath$filename.txt"
fi

Spuštění bez paramatrů vytvoří nový seznam známých souborů; přepínač -l (malé L) pouze vypíše nově nalezené soubory (neukládá nový seznam); a přepínač -r smaže všechny nově nalezené soubory/adresáře.

Dooufám, že se to někomu bude hodit, všechny připomínky vítány. :)
Název: Re:NewFilesRemover - netradiční záloha
Přispěvatel: daysleeper 14 Prosince 2011, 12:59:00
Objevují se vám v systému na různých místech divné soubory?
Takže ten skript mohu aplikovat na libovolný adresář v systému, případně i na kořen /?
Název: Re:NewFilesRemover - netradiční záloha
Přispěvatel: Martin Šácha 14 Prosince 2011, 13:17:54
Objevují se vám v systému na různých místech divné soubory?
Takže ten skript mohu aplikovat na libovolný adresář v systému, případně i na kořen /?
Ano, nastav proměnnou $searchpath na "/" a mělo by to fungovat.
Název: Re:NewFilesRemover - netradiční záloha
Přispěvatel: Martin Šácha 14 Prosince 2011, 17:34:11
Tak druhá alpha verze, trochu jsem to pročistil a script nyní explicitně nenásleduje symbolické odkazy (lze zapnout nahrazením parametru "-P" za "-L" u příkazu "find".

Kód: [Vybrat]
#!/bin/bash
filename="$(date +%d-%m-%Y_%H-%M-%S)" #conf filename pattern
defpath="$HOME/.NewFilesRemover/" #configuration path - use / (slash) at the end!
searchpath="/path/to/directory/" #use / (slash) at the end!

mkdir -p $defpath
defpathnew=$defpath"new.txt" #temporary file
defpathold=$defpath"old.txt" #last used list
touch $defpathold

find -P $searchpath -true | grep -v -E "^(.|..|$defpath|$searchpath\r?\n?)$" > "$defpath$filename.txt"
sort $defpath$filename.txt > $defpathnew 2> /dev/null
if [ "$1" = "-r" ];
then
rm -rf $(comm -23 $defpathnew $defpathold)
else
comm -23 $defpathnew $defpathold
fi
mv $defpathnew "$defpath$filename.txt"

if [ "$1" != "-l" ];
then
cp "$defpath$filename.txt" $defpathold
fi
Název: Re:NewFilesRemover - netradiční záloha
Přispěvatel: Martin Šácha 14 Prosince 2011, 20:55:16
Přidány profily - cestu ve scriptu lze modifikovat a script si pozná odpovídající db souborů - rozlišuje /bin a /home/user/bin. Pokud to alespon jeden clovek pouziva, doporucuji update :D

Kód: [Vybrat]
#!/bin/bash
filename="$(date +%d-%m-%Y_%H-%M-%S)" #filename pattern
defpath="$HOME/.NewFilesRemover/" #configuration path
searchpath="/path/to/directory" #use / (slash) at the end of path!
defpath=$(echo ${defpath%\/})$searchpath
#echo $defpath
mkdir -p $defpath
defpathnew=$defpath"new.txt" #temporary file
defpathold=$defpath"old.txt" #last used list
touch $defpathold

find -P $searchpath -true | grep -v -E "^(.|..|$defpath|$searchpath\r?\n?)$" > "$defpath$filename.txt"
sort $defpath$filename.txt > $defpathnew 2> /dev/null
if [ "$1" = "-r" ];
then
rm -rf $(comm -23 $defpathnew $defpathold)
else
comm -23 $defpathnew $defpathold
fi
mv $defpathnew "$defpath$filename.txt"

if [ "$1" != "-l" ];
then
cp "$defpath$filename.txt" $defpathold
else
rm "$defpath$filename.txt"
fi