Strona główna Ubuntu C++ Hardware HTML i javascript Java Software SQL

Awk|Bash – automatyczne usuwanie zbędnych plików kopi zapasowych.

Dodano: 2012-11-23

Tworząc kopie poszczególnych wersji pliku np. klas języka C++, ich ilość może narastać w dużym tempie. Po zwiększeniu wersji pliku nad którym pracujemy, warto usunąć zbędne kopie bezpieczeństwa. Przyda się do tego skrypt, który zautomatyzuje tą operację.

Skrypt poniżej usuwa pliki kopi poszczególnych wersji, których format wygląda następująco: [nameFile].[extension].[backupInformation]

W skrypcie ważną rolę odegrały komendy ls i grep. Poniżej przykład użycia:

  • ls | grep -c "textToSearch " – zliczenie liczby linii, w których tekst występuje
  • ls | grep "^textToSearch\." - wyszukanie linii, które zaczynają się od tekstu, a po nim jest znak kropki

Skrypt poniżej:

#!/bin/bash

echo "The script remove backup file in format: ";
echo "[nameFile].[extension].[backupInformation]";

if [ -f $FILE_TEMP ]; then
	echo "Remove all backup file? [yes]";
	read option;
	if [ "$option" != "yes" ]; then
		exit 0;
	fi

fi


ls | awk 'BEGIN{
}{
	if (($0 != ".") || ($0 != "..")) {
		if (system("[ `ls | grep -c \"^"$0"\.\"` -gt 0 ]") == 0){
			system("echo \"File do delete: \"`ls | grep -c \"^"$0"\.\"`");
			system("ls | grep \"^"$0"\.\"");
			print "rm `ls | grep \"^"$0"\.\"`";
			print "...";
			system ("rm `ls | grep \"^"$0"\.\"`");
		}
	}
}'

echo "The end ;)";