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.
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