web-dev-qa-db-fra.com

zip des fichiers dans tous les répertoires et sous-dossiers sans le dossier lui-même

Je dois récursivement compresser les fichiers individuels dans le chemin du répertoire et ses sous-dossiers sans compresser les dossiers ou le répertoire. J'ai également besoin d'exclure certains types de fichiers (plus d'un).

Comment puis-je faire cela sous Linux en utilisant ZIP?

Voici le script modifié (merci Ravexina).

#!/bin/bash
echo "hello world"
dir=/home/fjaffer/temp
#cd "${dir}"
#cd $(echo $dir | tr -d '\r')
cd "$dir"
find -not -iname '*.txt' -type f | while read -r file_name; \
do Zip "$(dir "$file_name")".Zip "$file_name" ; done

Sortie: ligne 8 Commande Zip introuvable.

3
Femina Jaffer

Vous pouvez le faire avec quelque chose comme ça:

find -not -iname '*.mp3' -type f | while read -r file_name; \
do Zip "$(realpath "$file_name")".Zip "$file_name" ; done

Il compressera tous les fichiers dans leur répertoire, séparément les fichiers "mp3".

Vous pouvez également exclure d'autres types de fichiers, par exemple des fichiers Zip et mp3:

find -not -iname '*.mp3' -not -iname '*.Zip' -type f

Donc cette structure:

.
└── a
    ├── 1
    │   └── 1.mp3
    └── 2
        ├── 1.jpg
        ├── 1.mp3
        └── 1.mpv

deviendrait:

.
└── a
    ├── 1
    │   └── 1.mp3
    └── 2
        ├── 1.jpg
        ├── 1.jpg.Zip
        ├── 1.mp3
        ├── 1.mpv
        └── 1.mpv.Zip
5
Ravexina