J'essaie d'écrire un script bash simple qui copiera tout le contenu d'un dossier, y compris les fichiers et dossiers cachés, dans un autre dossier, mais je veux exclure certains dossiers spécifiques. Comment pourrais-je y parvenir?
197
cp -R !(dir1|dir2) path/to/destination
!(dir1|dir2)
motif doitextglob
être activé (shopt -s extglob
pour l'activer).Réponses:
Utilisez rsync:
Notez que l'utilisation de
source
etsource/
est différente. Une barre oblique de fin signifie copier le contenu du dossiersource
dansdestination
. Sans la barre oblique de fin, cela signifie copier le dossiersource
dansdestination
.Alternativement, si vous avez de nombreux répertoires (ou fichiers) à exclure, vous pouvez utiliser
--exclude-from=FILE
, oùFILE
est le nom d'un fichier contenant des fichiers ou des répertoires à exclure.--exclude
peut également contenir des caractères génériques, tels que--exclude=*/.svn*
la source
rsync -av --exclude='.git/' ../old-repo/ .
Utilisez du goudron avec un tuyau.
Vous pouvez même utiliser cette technique sur ssh.
la source
Vous pouvez utiliser
find
avec l'-prune
option.Un exemple de
man find
:la source
cpio
n'a pas encore été emballé pour MSYS2.vous pouvez utiliser tar, avec l'option --exclude, puis le décompresser dans la destination. par exemple
voir la page de manuel de tar pour plus d'informations
la source
Similaire à l'idée de Jeff (non testée):
la source
/usr/share/icons
et j'ai immédiatement obtenufind: paths must precede expression: 22x22
où ce dernier était l'un des sous-répertoires . Ma commande étaitfind . -name * -print0 | grep -v "scalable" | xargs -0 -I {} cp -a {} /z/test/
(certes, je suis sur MSYS2, donc vraiment/mingw64/share/icons/Adwaita
, mais je ne vois pas comment c'est la faute de MSYS2)Non testé ...
la source
inspiré par la réponse de @ SteveLazaridis, qui échouerait, voici une fonction shell POSIX - il suffit de copier et coller dans un fichier nommé
cpx
dans yout$PATH
et de le rendre exécutable (chmod a+x cpr
). [La source est maintenant conservée dans mon GitLab .Exemple d'utilisation
la source