Dělám bash skript pro vytvoření zálohy mých mysql databází.
Ve skutečnosti bych chtěl ty staré smazat.
Takže jsem vytvořil svůj skript s proměnnou pro údržbu.
Celý skript vlastně funguje, jediná věc, která nefunguje, je smazání starých. Myslel jsem, že to bude ta nejjednodušší část.
Každopádně zde je můj kód, může mi někdo říct, co je špatně?
A příkaz rm mi vrátí:rm: impossible de supprimer « /path/to/backup/files/*.gz »: Aucun fichier ou dossier de ce type
Což znamená rm: impossible to delete « /path/to/backup/files/*.gz »: no files or directory of this type
Ale co je opravdu zvláštní, zaprvé je, že jsem skript našel v tutoriálu
Za druhé, že když si v příkazu shell spustím „rm /path/to/backup/files/*.gz“, bude to fungovat a odstraní všechny soubory .gz (podle očekávání)
#!/bin/bash
USER="***"
PASSWORD="****"
OUTPUT="/path/to/backup/files"
rm "$OUTPUT/*.gz"
databases=`mysql --user=$USER --password=$PASSWORD -e "SHOW DATABASES;" | tr -d "| " | grep -v Database`
for db in $databases; do
if [[ "$db" != "information_schema" ]] && [[ "$db" != _* ]] && [[ "$db" != "performance_schema" ]] ; then
echo "Dumping database: $db"
mysqldump --force --opt --user=$USER --password=$PASSWORD --databases $db > $OUTPUT/`date +%Y%m%d`.$db.sql
gzip $OUTPUT/`date +%Y%m%d`.$db.sql
fi
done
Děkuji,
Přijatá odpověď:
Alternativním způsobem je zkombinovat rm s find a/nebo xargs .
Zde jsou některé alternativy:
find "$output" -name *.gz -type f -delete
find "$output" -name "*.gz" -type f -exec rm '{}' \;
find "$output" -name *.gz -type f -print0 | xargs -0 rm
PS:typ f znamená vyhledání souborů.
Ve výchozím nastavení hledání prohledává všechny podadresáře. V případě potřeby můžete operaci hledání omezit na aktuální adresář pomocí volby maxdepth:
find "$output" -maxdepth 1 -name "*.gz" -type f -exec rm '{}' \;
Pokud potřebujete nadále pracovat s rm a proměnnou, fungovalo to pro mě na jednom řádku:
out="/home/gv/Desktop/PythonTests/appsfiles";rm "$out"/*.txt
rm: remove regular file '/home/gv/Desktop/PythonTests/appsfiles/a.txt'? y
rm: remove regular file '/home/gv/Desktop/PythonTests/appsfiles/a ver 1.txt'? y
rm: remove regular file '/home/gv/Desktop/PythonTests/appsfiles/b.txt'? y
rm: remove regular file '/home/gv/Desktop/PythonTests/appsfiles/c.txt'? y
rm: remove regular file '/home/gv/Desktop/PythonTests/appsfiles/d.txt'? y