Linux trouve les fichiers dans les sous-répertoires par extension (.txz), puis les déplace vers le répertoire spécifié à l'aide d'expressions régulières [duplicate]

0

Cette question a déjà une réponse ici:

J'ai mis en miroir un répertoire d'un serveur avec un grand nombre de sous-répertoires, chacun contenant un package .txz et les fichiers .txt et descripteurs habituels. Ce que j'aimerais faire est la suivante:

Recherchez / localisez tous les fichiers .txz dans tous les sous-répertoires, puis déplacez-les tous vers un dossier spécifique; en utilisant des expressions régulières. Quelle serait l'expression régulière à utiliser, en bash sur slackware linux? Merci

DMZ
la source
Quel est votre besoin d'expressions régulières? Essayez-vous simplement de faire correspondre le nom de fichier .txz, ou y a-t-il autre chose qui se passe ici?
lindes-hw

Réponses:

1

Pour répondre à votre question comme vous l'avez posée:

find -regex '.*\.txz' -type f -exec mv {} '/destination/path' \;

Notez cependant que l'utilisation de regex n'est pas nécessaire pour votre tâche. La commande ci-dessous aurait aussi bien fonctionné:

find -name '*.txz' -type f -exec mv {} '/destination/path' \;

Vous pouvez également le faire sans utiliser quoi que ce soit à part bash et mv. Ceci utilise la recherche de modèle et l'option globstar du shell.

shopt -s globstar
for file in ./**/*.txz; do
    [[ -f $file ]] && mv "$file" '/destination/path'
done
shopt -u globstar
Six
la source