J'ai une bibliothèque de documents où tous mes fichiers se trouvent dans des dossiers basés sur le nom de la catégorie, mais ils se trouvent également dans des sous-dossiers appelés "pdf". Existe-t-il un moyen dans bash de parcourir tous les répertoires de la bibliothèque et de déplacer tous les fichiers des dossiers nommés pdf dans leur répertoire parent?
0
Voici ce à quoi je pensais. Ce n'est pas la plus jolie chose, mais cela fonctionne selon vos spécifications:
Il déplace uniquement les
.pdf
fichiers des sous-pdf
dossiers dans les répertoires parent correspondants. Pour modifier la commande afin de déplacer tous les fichiers des sous-pdf
dossiers, ajustez l'ipath
argument en*pdf/*
.Exemple d'utilisation
la source
find
àxargs
, vous devriez utiliserfind … -print0 | xargs -0 …
.ipath
, je n'ai pas pensé à ça.$(dirname $(dirname {}))
peut être abrégé"$(dirname {})"/..
si je ne me trompe pas. (En général, les arguments{}
devraient être cités pour empêcher les fichiers comportant des espaces dans leur nom ou similaires de s'afficher sous forme d'arguments multiplesmv
.)"$(dirname {})"/..
le rend beaucoup plus propre, aussi. Je n'ai même pas pensé à le citer, non plus. Tout chemin avec des espaces briserait la commande d'origine.*.*
Récupère (uniquement) tous les fichiers dont le nom contient un point . Pour obtenir tous les fichiers, utilisez tout simplement*
(et même cela pourrait ne pas avoir les fichiers dont le nom commence par un point).