исключить пустые и скрытые файлы при архивировании

Причина сбоев в том, что я не установил vim, поэтому

sudo apt-get install vim

исправил это

0
14.04.2019, 11:00
2 ответа

Поскольку вы пометили этот linux, я предполагаю, что у вас есть GNU find и GNU tar.

Если ваши имена файлов не содержат встроенных символов новой строки и вы не хотите архивировать пустые каталоги:

find "$3" -type f \! -empty \! -name '.*' | tar cvf "$1/$2" -T -

find находит соответствующие файлы, а -T - сообщает tar , чтобы прочитать список файлов для архивирования из stdin.

Уточним это, если вы хотите включить пустые каталоги:

find "$3" \( -type d -empty \) -o \( -type f \! -empty \! -name '.*' \) | \
    tar cvf "$1/$2" -T -

И если вы также хотите обрабатывать имена файлов со встроенными символами новой строки:

find "$3" \( \( -type d -empty \) -o \( -type f \! -empty \! -name '.*' \) \) -print0 | \
    tar cvf "$1/$2" --null -T -
7
28.01.2020, 02:16

Попробуйте это:

find test/ -not -iname ".*" -not -empty -exec tar --no-recursion -rvf file.tar {} \;

Единственная проблема в том, что пустые каталоги не будут включены, но я думаю, что где-то есть обходной путь...

0
28.01.2020, 02:16

Теги

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