ZIP-файлы во всех каталогах и подпапках без самой папки
Мне нужно рекурсивно заархивировать отдельные файлы в пути к каталогу и его подпапках без архивирования папок или каталога. Мне также нужно исключить определенные типы файлов (более одного).
Как я могу сделать это в Linux, используя ZIP?
Вот модифицированный скрипт (спасибо 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
Вывод: строка 8 команда zip не найдена.
1 ответ
Вы можете сделать это примерно так:
find -not -iname '*.mp3' -type f | while read -r file_name; \
do zip "$(realpath "$file_name")".zip "$file_name" ; done
Он будет архивировать все файлы в их каталоге, отдельно друг от друга, что из "mp3" файлов.
Вы также можете исключить другие типы файлов, например, zip и mp3 файлы:
find -not -iname '*.mp3' -not -iname '*.zip' -type f
Итак, эта структура:
.
└── a
├── 1
│ └── 1.mp3
└── 2
├── 1.jpg
├── 1.mp3
└── 1.mpv
станет:
.
└── a
├── 1
│ └── 1.mp3
└── 2
├── 1.jpg
├── 1.jpg.zip
├── 1.mp3
├── 1.mpv
└── 1.mpv.zip