Un puissant partage de script de suppression de fichiers par lots implémenté par Ruby

2020-05-21

Récemment, il y a plus de packages apk sur le serveur de packaging. Chaque opération manuelle rm est trop gênante, il a donc fallu quelques minutes pour écrire un script qui peut supprimer par lots le répertoire spécifié en fonction de la dernière modification et de la correspondance générique. Après avoir ajouté ce script à crontab, il n'y a pas lieu de s'inquiéter que les packages d'installation supplémentaires prennent de l'espace disque à l'avenir.

Code court


copiez le code le code est le suivant:


#! / usr / bin / env ruby ​​
# encodage: utf-8
#Usage: ruby ​​removeOldFiles.rb "dest_file_pattern" days_ago
destFilePattern = ARGV [0]
daysAgo = ARGV [1]
edenTime = Time.now.to_i-daysAgo.to_i * 86400
Dir [destFilePattern] .each {| child |
     système "rm -rfv # {enfant}" si (File.mtime (enfant) .to_i }

Comment utiliser

Il est très simple à utiliser, les règles d'utilisation sont les suivantes

copiez le code le code est le suivant:


ruby removeOldFiles.rb "dest_file_pattern" days_ago

Par exemple, si nous voulons supprimer tous les fichiers apk du répertoire / tmp, la dernière heure de modification est il y a 3 jours, il suffit de l'exécuter de cette façon.


copiez le code le code est le suivant:


ruby removeOldFiles.rb "/tmp/*.apk" 3

Pourquoi utiliser des guillemets doubles pour le premier paramètre

Le premier paramètre est un chemin contenant des caractères génériques. Il y a un outil dans le shell qui fait correspondre le chemin contenant les caractères génériques à des fichiers spécifiques, tels qu'un tel morceau de code.


copiez le code le code est le suivant:


! / usr / bin / env ruby ​​
# encodage: utf-8
met ARGV.length
ARGV.chaque do | a |
     met "Argument: # {a}"
fin

Nous passons un paramètre de chemin d'accès contenant des caractères génériques, et le résultat est le nom du fichier après la correspondance globale (à condition que le caractère générique puisse correspondre au fichier).


copiez le code le code est le suivant:


10:41 $ ruby ​​test.rb * .txt
2
Argument: abc.txt
Argument: def.txt


Pour éviter les opérations glob, vous devez utiliser des guillemets doubles pour les paramètres de chemin d'accès qui contiennent des caractères génériques.


copiez le code le code est le suivant:


10:41 $ ruby ​​test.rb "* .txt"
1
Argument: * .txt

Le premier paramètre doit donc utiliser des guillemets doubles lors de l'utilisation du script.

Comment parcourir les fichiers contenus dans les sous-répertoires

Par exemple, si nous voulons parcourir /tmp/abc/def.txt, nous pouvons utiliser / tmp / ** /. txt

www.xd1998.com@2001-2030Partage De Technologie