zip-файлы во всех каталогах и подпапках без самой папки

Я должен рекурсивно архивировать отдельные файлы самостоятельно в пути к каталогу и его sub папках, не архивируя папки или каталог. Я также должен исключить определенные типы файлов (больше затем один).

Как я могу сделать это в 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, не найденных.

3
задан 3 September 2018 в 18:41

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
5
ответ дан 1 December 2019 в 15:33

Другие вопросы по тегам:

Похожие вопросы: